Hallo, ich habe folgende Aufgabe(mit Matlab): Ich habe zwei Vektoren, der eine beinhaltet sozusagen die x-Achse, der andere die y-Achse. Der eine Vektor hat also die Daten an einer bestimmten Position, die vom anderen Vektor definiert wird. Als Bsp: Pos: 1 2 3 4 5 6 7 8 9 V1= [1,1 2,4 3,3 4,8 5,2 6,9 7,1 8,4 9,5] - Position (x-Achse) V2= [ 3 7 5 9 7 3 4 5 2] - entsprechender Wert (y-Achse) jetzt möchte ich einen Teilbereich des V1 Vektors raussuchen und mir die Werte des V2 anzeigen. Als Bsp: Der Bereich soll von 3 bis 7 gehen: Ich muss also aus V1 heraussuchen, wann zum ersten mal die 3 kommt (>=3) und wann zum letzen Mal etwas kleineres als >7 kommt. Das wäre hier von Pos 3 bis Pos 7. Diese beiden Positionen brauche ich um dann auf V2 so zuzugreifen: V2(3:7). Kann mir jemand bitte bei der Syntax helfen?
1 | %Pos: 1 2 3 4 5 6 7 8 9 |
2 | V1= [1,1 2,4 3,3 4,8 5,2 6,9 7,1 8,4 9,5] %- Position (x-Achse) |
3 | V2= [ 3 7 5 9 7 3 4 5 2] %- entsprechender Wert |
4 | |
5 | V2n = [V2 V2] |
6 | V2n(1:2:end) = V2; |
7 | V2n(2:2:end) = V2; |
8 | |
9 | ott = 1:numel(V1); |
10 | i1 = ott(V1>3); |
11 | i1 = i1(1); |
12 | |
13 | i2 = ott(V1>7); |
14 | i2 = i2(end); |
15 | |
16 | plot(V1(i1:i2), V2n(i1:i2)) |
Wobei ich keine Ahnung habe, was das seltsame Datenformat soll - also warum V1 doppelt so viele Elemente wie V2 hat. Wenn die Kommata Dezimalpunkte sein sollen und beide Vektoren die gleiche Anzahl an Elementen haben, kann man sich den Krampf mit V2n sparen.
Danke, habe hinbekommen was ich wollte. Jetzt habe ich aber noch eine Frage: Ich habe ein Audiosignal, das wird mit einer FFT analysiert und die Frequenzen mit Amplitude werden dargestellt. Danach mache ich eine Terzbandanalyse. Die Syntax steht und es läuft auch alles wie gewünscht. Ich bin mir aber nicht sicher, ob ich richtig verstanden habe wie eine Terzanalyse funktioniert. Ich integriere das FFT Signal im Bereich der einzelnen Terzbänder und nehme dann den maximalen Wert der Integration. Diesen lege ich dann als Amplitude der ganzen Terz fest. Ich bekomme also ein Stufensignal über die Frequenz. Weil die Terzbänder aber mit steigender Frequenz immer breiter werden, ist die Amplitude bei höheren Frequenzen deutlich höher als bei niedrigen. Also wenn die hohen Frequenzen wenig Amplitude haben, führen sie dennoch zu einer großen Amplitude in der Terzanalyse (wg großem Integrationsbereich). Man sieht im angehängten Bild, dass die Terzbandanalyse das eigentliche Signal nicht wirklich abbildet. Ist das so gewollt oder habe ich da was falsch verstanden? Muss das Signal zuvor A-bewertet werden? (hohe Frequenzen nehmen dann ja ab) Hier der Ausschnitt wie ich die Terzbänder berechne: terzdaten = xlsread('C:\Terzbaender.xlsx'); zeilen=size(terzdaten); for i=1:1:zeilen(1) minimum=find(gfreq>=terzdaten(i,3),1); % in Spalte 3 steht die untere Terzfreqenz maximum=find(gfreq> terzdaten(i,4),1); % in Spalte 4 steht die obere Terzfrequenz integral(minimum:maximum-1)=max(cumtrapz(abs_h(minimum:maximum-1))); end
Moin, ich habe zwar gerade kein Matlab zur Hand, aber guck Dir mal bitte bei Matlab die FIND Funktion an. Ich glaube damit sollte das auch ein wenig einfacher gehen. Gruß
mit der find Funktion habe ich es gemacht, sieht man im Programmcode, den ich bei meinem letzten Post angefügt habe. Könnte aber noch Hilfe bei der Terzanalyse gebrauchen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.