matlab求fft的圖形時,f 0 length y 1119 length y 是什麼意思

2021-03-22 07:37:06 字數 1555 閱讀 3521

1樓:匿名使用者

你的那個程式對初學者來說比較難理解,我幫你改了一下,概念比較清晰,你可以對照一下

fs=128;%%取樣頻率

n=512;%%取樣點數

dt=1/fs;%%時域最小間隔,即時域解析度

t=(0:n-1)*dt;%%取樣時間長度

df=fs/n;%%頻域最小間隔,即頻域解析度

f=(-n/2+1:n/2)*df;

x=5*sin(2*pi*20*t)+3*sin(2*pi*30*t);

y=fft(x);

y=fftshift(y);

a=abs(y);

a=a/(n/2);%%還原真實幅值

figure(1)

subplot(121)

plot(t,x)

xlabel('時間t')

ylabel('幅值x')

grid on

subplot(122)

plot(f,a)

xlabel('頻率f')

ylabel('幅值a')

grid on

對比上面那個程式,可以知道dt=1/fs=1/119,故你的取樣頻率為119hz,取樣點數為120

df=fs/n;%%頻域最小間隔,即頻域解析度

f=(-n/2+1:n/2)*df;

對比上面可知,你的119/length(y)=119/120=df,即頻域解析度

不知道我說清楚沒,有不懂的歡迎追問。

2樓:

其實,plot(t,abs(y))也能畫出頻譜圖,但是不能用fft(x)畫頻譜,不太正規來說。fft(x)快速傅利葉算出的是一組複數,帶有i虛部。你是畫不出來的。

而傅利葉變換算出的複數平方,才反應頻率疊加的概念。至於f=(0:length(y)-1)'*119/length(y); 只是改變一下頻率橫軸而已。

3樓:匿名使用者

f=(0:length(y)-1)'*119/length(y);作用是頻率轉換,如果直接plot(fft(x))就不能看到這個波形是由有哪幾個固有頻率的簡諧波重疊而成的,通常需要進行頻率轉換。

用matlab進行fft變換後畫的波形為什麼總是稱的?

4樓:匿名使用者

你用的是正弦訊號,換過乙個訊號,如非高斯訊號,我們說話的語音頻號,就不對稱了。

5樓:匿名使用者

這個很簡單,fft 是z 變換和離散序列傅利葉變換上的單位圓上等間隔取點,而傅利葉和內z變換均包含週期為2pi的特容性。那麼你在單位圓上取點,根據三角函式的特性他們相位相差一百八十度只需要在前面加乙個負號(sinx)或者直接不用加(cosx),而我們得到的fft是幅頻特性曲線,高低只代表幅度大小,重點來了:我們在單位原上取的點是乙個複數(s域或者z域),複數的大小是實部的平方加虛部的平方再開根號,根據剛剛我們推得的三角函式特性,如果相位差180度,也就是乙個pi,他們之間的幅度應該是完全一樣的!

現在你再看matlab畫的圖,是不是對稱點是(pi,0)啊?我講得夠明白透徹了吧,希望能幫上忙。

關於matlab的FFT不懂!急

1 一般頻域的取樣點要大於時域的取樣點,最好是2的冪數,便於計算。可以看看數字訊號處理這類的書 2 假設取樣頻率為fs,訊號頻率f,取樣點數為n。那麼fft之後結果就是乙個為n點的複數。每乙個點就對應著乙個頻率點。這個點的模值,就是該頻率值下的幅度特性。具體跟原始訊號的幅度有什麼關係呢?假設原始訊號...

matlab中畫序列的圖形時如何將頂端的圓圈變成實心的

是用stem畫圖嗎?附加乙個引數 filled 就可以了 stem rand 10,1 filled 或者更簡單點,只寫首字母 f 就行 stem rand 10,1 f matlab用plot畫圖時如何將標記做成實心的 多組資料 plot x,y,r marke cecolor r 這裡的 r 代...

matlab小波包分析的圖形輸出問題

你這個不是已經出圖了嗎?這不已經從上到下有了嗎。當然能用小波工具箱來做了。用db3 4層分解做 小波工具箱第乙個 matlab小波包分析,請教這個圖怎麼看?這是dwt的,哪bai來的小波包。du看個啥,原始訊號那zhi 麼平直,最多d1和d2有些dao不連續點的內位置,但難以定位分析容,主要是原訊號...