我正在嘗試計算正弦函數的幅度和頻率調製以及相位。Matlab:如何查找具有線性增加頻率和相位的正弦函數的頻率,幅度和相位?
fs = 128;
x1 = 1/fs:1/fs:1;
A1 = 50*x1;
B1 = 10*x1;
C1 = 1;
D1 = 1;
y1 = D1 + A1.*sin(C1 + B1.*x1);
因此,我已獲得的正弦函數:
功能如下描述下。它的幅度和頻率隨時間而增加,並且取決於時間。我只需要使用128個採樣,因此採樣頻率變爲128Hz。假設我不知道A1,B1,C1或D1參數,並且只知道「y1」的採樣頻率和結果,是否可以計算所有這些參數?
我想要的是能夠確定任何給定時間點的頻率,振幅和函數的偏移。
我知道它是可以計算的所有那些在幾個方面穩定參數的函數,我親自試過這樣:
zastep2 = 1 + 40.*sin(1 + 10.*x1);
x = x1';
y = zastep2';
calc = @(d) [ones(size(x)),sin(d*x),cos(d*x)]\y;
calc2 = @(d) sum((y-[ones(size(x)),sin(d*x),cos(d*x)]*calc(d)).^2);
Bw = fminbnd(calc2,1,50)
abb = calc(Bw);
Dw = abb(1)
Aw = norm(abb([2 3]))
Cw = acos(abb(2)/Aw)
「zastep2」用於模擬與不變參數的函數。結果,我得到Dw = 1,Cw = 1,Aw = 40和Bw = 10的值,所以一切都很好。
問題是,我的功能在每一步的幅度和頻率線性增加,所以使用這種解決方案是不可能的。
如果在每個步驟中頻率和振幅都增加,有什麼方法可以計算出來嗎?我當然不會要求即時的解決方案或完整的代碼,但是我真的很堅持這一點,在互聯網上搜索了很長時間之後,我決定提出自己的問題。