sinus sweep in matlab

Gast #783659
Lesenswert?

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
Gast #783904
Lesenswert?

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
Angehängte Dateien:
#784459
Lesenswert?

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
Gast #788006
Lesenswert?

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
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren