W jaki sposób można stworzyć (opisać) sinusoidę o zmieniającej się liniowo częstotliwości w dyskretnych chwilach czasu? u=sin(wt) t - wektor dyskretych chwil czasu
Próbowałem podstawić za "w" zmieniającą się liniwo częstotliwość, ale dla przykładowych wartości: "w"początkowe = 2*pi*20 "w"końcowe = 2*pi*40
dla symulacji trwającej 1s i częstotliwości próbkowania 1kHz ostatni okres przebiegu ma częstotliwość bliską 60Hz zamiast oczekiwanych 40Hz
Będe wdzięczny za wszelkie sugestie. Sebastian
Didn't find your answer? Ask the community — no account required.
P
PaweÅ HaÅczur
Użytkownik Seba napisał:
A wrzuć ten skrypt/programik
S
Seba
To jest napisane w Matlabie
function sf=f0tof1(f0,f1,fp,tk) % sf=f0tof1(f0,f1,fp,tk) %sf - wektor sygnału o zmieniającej się częstotliwości %f0 - częstotliwość początkowa %f1 - częstotliwość końcowa %fp - częstotliwość próbkowania %tk - czas symulacji n=tk*fp t=[0:1/fp:tk-1/fp]; f=linspace(f0,f1,n); %wektor n-elementów rozłożonych liniowo od f0 do f1 sf=sin(2*pi*f.*t);
Doszedłem do wniosku że należy również modyfikować fazę sygnału ale na razie nie potrafię znaleźć w jaki sposób
J
Jaroslaw Berezowski
Dnia 17 Apr 2005 08:46:33 +0200, Seba snipped-for-privacy@op.pl napisał:
Gwoli scislosci nie bedzie to sinusoida ;)
P
pisz_na.mirek
Zależy jak patrzeć na częstotliwość we wzorze:
y=sin(2*pi*f*t)
Jeżeli algebraicznie to jest wszystko OK, bieżesz po prostu
f=linspace(f0,f1,n)
Jak zaś patrzeć na to przez pryzmat tzw. częstotliwości chwilowej (instantaneous frequency), to świat staje się ciekawy:
- faza chwilowa w twoim wzorze: fi=(2*pi*f*t)
- częstotliwość chwilową zdefiniujmy: fi=d(fi/2/pi)/dt, co daje
fi = d(f*t)/dt = f'*t+f*t' = f'*t + f
- dla f=const, f'==0, to fc==f
- u ciebie zaś d(f)/dt == const więc dla czasu symulacji t=0->tk i f=fp->fk mamy