WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Vektor mit einer Matrix abgleichen

 

svartsol
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 11.11.12
Wohnort: Schweiz
Version: ---
     Beitrag Verfasst am: 11.11.2012, 16:08     Titel: Vektor mit einer Matrix abgleichen
  Antworten mit Zitat      
Hallo zusammen!

Ich bin noch blutiger Anfänger in Matlab und steh grad vor nem Problem.

Ich hab einen Spaltenvektor Y und eine Art "Lookuptable".

Jetzt soll z.B. der Wert der ersten Komponente von Y in der ersten Spalte der Lookuptable gesucht werden und dann mit dem entsprechenden Wert in der 2.Spalte ersetzt werden. Wie etwa hier angedeutet:

Code:

Y=[2;5;3;1];
Lookuptable=
[1 0.15
 2 0.36
 3 0.48
 4 0.78
 5 0.88
 6 0.97];
%Jetzt soll die Berechnung erfolgen, sodass ein neuer Spaltenvektor entsteht:

Y=[0.36;0.88;0.48;0.15];
 


Wie macht man sowas? Danke schomal für eure Bemühungen!

Gruss Timo
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 11.11.2012, 16:33     Titel:
  Antworten mit Zitat      
Hallo,

wenn die erste Spalte von Lookuptable die Zeilennummer ist, dann ist das einfach:

Code:
Y = Lookuptable(Y, 2)


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
svartsol
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 11.11.12
Wohnort: Schweiz
Version: ---
     Beitrag Verfasst am: 11.11.2012, 16:45     Titel:
  Antworten mit Zitat      
Vielleicht muss ich etwas genauer werden, was meine Variabeln angeht.

Y ist in meinem Fall ein Spaltenvektor, der mittels Wavread eingelesen wurde.
Die Werte bewegen sich zwischen -1 und 1. Es sind ca. 5Mio Werte. Bits: 24bit.

Die erste Spalte der Lookuptable geht mittels linspace von -1 bis 1, ca. 1.4Mio Werte
und dazu die 2. Spalte mit entsprechend gleich vielen Werten.
Private Nachricht senden Benutzer-Profile anzeigen
 
Sirius3
Forum-Guru

Forum-Guru


Beiträge: 441
Anmeldedatum: 12.11.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.11.2012, 17:00     Titel:
  Antworten mit Zitat      
Hallo Svartsol,

da es sich um Fließkommazahlen handelt, ist das mit dem Lookup etwas schwieriger.
Eine exakte Übereinstimmung zwischen zwei Werten ist Glückssache. Was soll
mit den Zahlen passieren die nicht im Lookup sind? Soll auf den nächsten Wert
gerundet werden?
Da die Lookupwerte mit linspace erzeugt wurden würde ich ein mapping
Y: -1 .. 1 -> 1 .. 1,4Mio vorschlagen und dann Haralds Lösung zu nehmen:
Code:
scaled_Y=round((Y+1)*0.5*(length(Lookuptable)-1))+1;
Y = Lookuptable(scaled_Y, 2);


Grüße
Sirius
Private Nachricht senden Benutzer-Profile anzeigen
 
svartsol
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 11.11.12
Wohnort: Schweiz
Version: ---
     Beitrag Verfasst am: 13.11.2012, 18:07     Titel:
  Antworten mit Zitat      
Es hat alles super funktioniert, vielen Dank!

Habe die Lookuptable aber noch vergrössert, damit diese auch aus 2^24 Werten besteht.

Ich hab noch ein anderes Problem. Hoffe das geht in Ordnung, wenn ich dafür nicht gleich nen neuen Thread aufmache.

Bei der obigen Problemstellung ging es um die Verzerrung eines trockenen Gitarrensignals mittels der Lookuptable. Das hat ja geklappt. Jetzt wäre das Ziel, vor der Verzerrung noch ein Tonestack (parm. EQ mit Bass,Mitten und Höhen) einzubinden.

Als Ansatz stütze ich mich auf folgendes Skript:
https://ccrma.stanford.edu/~dtyeh/papers/yeh06_dafx.pdf
Dort sind alle Gleichungen und Werte drin.

Ich habe die Gleichungen alle in ein M-File gepackt und dann versucht die Übertragungsfunktionen H(s) und H(z) mit dem eingelesenen Wave-File zu falten. Manchmal mit YEQed= Y.*H, manchmal YEQed=conv(Y,H). Aber jedes Mal beginnt der PC mächtig zu rechnen und der Arbeitsspeicher steigt auf 15GB, baer fertig wird er nicht.

Ich hab das M-File mal angehängt, falls jemand mal schauen möchte, was ich alles so verbrochen habe. Ab Zeile 50 war ich nur noch am probieren, deshalb die vielen Kommentar-Zeilen. Was mache ich genau falsch? Oder habe ich ein allgemeines Missverstädnis von dem was ich da mache?

Das Bode-Digramm hat stellenweise so ausgesehen wie es sollte. Das Falten hat dennoch nicht geklappt.

Grüsse


Timo

Tonestack.m
 Beschreibung:

Download
 Dateiname:  Tonestack.m
 Dateigröße:  2.49 KB
 Heruntergeladen:  325 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
svartsol
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 11.11.12
Wohnort: Schweiz
Version: ---
     Beitrag Verfasst am: 13.11.2012, 20:27     Titel:
  Antworten mit Zitat      
Ich hab das M-File etwas aufgeräumt und mit Kommentaren versehen, damit ihr seht, was meine Überlegungen waren und wo die Probleme sind.

Tonestack.m
 Beschreibung:

Download
 Dateiname:  Tonestack.m
 Dateigröße:  2.6 KB
 Heruntergeladen:  342 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.