1樓:
題主我覺得你有兩個的地方有問題
1、沒有定取樣頻率,如果是1Hz取樣,取樣4000s,這樣得到的資料肯定是很難看得,取樣率太低了
2、Matlab裡面fft和dft是同乙個函式,只是如果訊號長度恰好為2^N時候,就會呼叫dft,所以需要做乙個補零的運算。
我試著改了一下你這兩方面的問題
sigma1=10
;sigma2
=100;N
=1024
*4096
;%頂取樣率為1024Hz,取樣4096syp1=(1
:N)'/
1024
;yp2=(
1:N)
'/1024
;yp1=(
1/(sqrt(2
*pi)*
sigma1))*
exp(-((
yp1-
2000)./
sigma1).^
2./2);
yp2=(1
/(sqrt(2
*pi)*
sigma2))*
exp(-((
yp2-
2000)./
sigma2).^
2./2)
;subplot(3
,1,1
)plot((1
:N)/
1024
,yp1,(1
:N)/
1024
,yp2)[
fre1
,amp1
]=fftResult
(yp1
,1024);[
fre2
,amp2
]=fftResult
(yp2
,1024
);subplot(3
,1,2
)semilogx
(fre1
,amp1
,fre1
,amp2
)subplot(3
,1,3
)semilogx
(fre1
,amp1
./amp2
)你可以執行試試看,是不是好得多
幅值比例因為十分巨大,我再做了乙個loglog,這個看起來也比答主你的看起來好很多了
這裡用到乙個我以前寫的函式fftResult,用來求FT的幅值的其實這個函式本身就為了精度考慮做了加零處理function
[freplot,amplitude]=
fftResult
(sig,fs)
%FFT幅值譜圖繪製N=
length
(sig
);%訊號長度
nfft
=2^nextpow2(N
);%大於並最接近N的2的冪次方為FFT長度sig(N+
1:nfft)=0
;sig11
=hanning
(nfft).*
sig;
%加漢寧窗,去除旁瓣影響y1=
fft(
sig11
,nfft
);%進行fft變換
mag=
abs(y1)
*2/nfft
;%求幅值,保持了原資料單位f=(
0:length(y1
)-1)
*fs/length(y1
);%進行對應的頻率轉換
freplot=f
(1:nfft/2
);%FFT幅值譜頻率範圍
amplitude
=mag(1
:nfft/2);
如何在matlab中根據傳遞函式和輸入訊號計算輸出響應?
走走停停 如果實測輸出響應訊號的訊雜比足夠高的話,可以不用譜估計的方法,而直接利用輸入訊號 系統傳函 輸出訊號間的關係,即 在頻域上,輸出訊號 Y f 等於輸入訊號 X f 與系統傳函 H f 的乘積。在已知輸入激勵訊號和其實測輸出響應的情況下,分別進行傅利葉變換得到 X f 和 Y f Y f X...
自動控制中,究竟何謂開環傳遞函式
JamesHunt 感覺國內課本對開環傳函的定義有問題,擷取一段外文書中對開環系統的定義吧,大致意思是 開環傳函是系統迴路在某一點斷開後所得到的傳遞函式。雖然理論上系統迴路可以在任意一點斷開,但通常情況下設計人員會在一些可調引數位置處斷開。例如,可以將單迴路反饋控制系統從如圖22.14所示的誤差訊號...
從閉環傳遞函式的波特圖能不能看出該傳遞函式的階躍響應曲線含有超調?
李崇 問題1 能不能只從波特圖得出該負反饋系統的階躍響應有超調 和右圖一致 可以。從經驗角度來說,只要看到輻值部分有超過0db的峰,就可以判定有超調。更精確的辦法是把頻域響應圖給還原成傳遞函式,就可以從頻域響應得到更精確的時域行為。問題2 以及能不能像開環波特圖一樣從相角或者幅值裕度看出該系統穩定 ...