Hallo Ich möchte einen sweep programmieren, in matlab zur grafischen ausgabe. Der Sinus sollte von 0Hz bis 10Hz gehen in der Zeit von 0-1s dann von 10Hz wieder auf 0 in der Zeit von 1-2s. 0-1s: a(t) = sin(w*fs1*tn) wobei fs1 ein array mit den werten von 0-10 ist, tn die zeit zum punkt n. funktioniert gut. 1-2s: a(t) = sin(w*fs2*tn) wobei fs2 ein array mit den werten von 10-0 ist. Das funktioniert so jedoch nicht. wie kann ich das am besten programmieren? gruss tobias
Interessante Aufgabenstellung :) Eine Idee: Nimm eine beliebige Funktion die im gewünschten Zeitintervall zu Beginn einen niedrigen Anstieg hat, dann bei T/2 ihren maximalen Anstieg hat und am Ende des Intervalls wieder einen Anstieg von Null hat. Wenn du diese Funktion korrekt skalierst kannst du die von ihr generierten Werte als wt = 2*pi*f*t nutzen. Nur die Frequenz als bspw. sin²(x) oder Dreieck zu ändern und mit einem Zeitvektor zu multiplizieren bringt wie du gemerkt hast ja nicht das gewünschte Ergebnis. Alternativ bietet Matlab auch eine "chirp" Funktion, die kann aber auch nur in eine Richtung sweepen. Gruß, Alex
Müsste so in etwa gehen:
1 | t=0:1e-3:1; |
2 | f0=0; f1=10; |
3 | y1=chirp(t,f0,1,f1); |
4 | y2=fliplr(y1); |
5 | y=[y1 y2]; |
6 | plot(0:1e-3:2+1e-3, y); |
Das verursacht aber höchstwahrscheinlich eine Unstetigkeit in der Mitte, oder?
Den zweiten Teil des Signals einfach spiegeln mit flip, wie Hägar das macht. Aber auf so kruden Voodoo bullshit wie 'chirp' würde ich nicht zurückgreifen. Das ist ne linear ansteigende Winkelgeschwindigkeit des umlaufenden Zeigers von 0 bis 2*pi*10 rad/sec. Das aufintegriert liefert den Phasenwinkel, davon den Sinus, fertig ist die Laube. fsample=8000; %Abtastfrequenz dph=10*2*pi*(0:1/fsample:1); ph=cumsum(dph); signal=sin(ph); signal=[signal fliplr(signal)]; gute Nacht Detlef
Hallo, ich würde es so lösen (siehe Anhang). Die Idee dabei ist, dass man den Zeiger in der komplexen Ebene immer um 2*pi*f(aktuell)*dt weiterdreht. Der sweep ergibt sich dann aus dem Imaginärteil. Gruß, Philipp
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.