1樓:匿名使用者
假如你變換後了,
那麼幅值=abs(fft(y));
f=2*pi*k/n;(k=0、1、2、3、。。。、n-1)n是原始資料的個數。
matlab中如何對一組資料進行fft變換後得到頻譜圖??
2樓:用著追她
1、直接對其使用來ceil函式,源
可以向上取整:即大於等於給定數bai據的最du小整數。
2、使用zhifloor函式可以進行向下取dao整。如圖,將矩陣a中的每個元素取小於等於該元素的最大整數。
3、使用fix函式則可以去除小數部分。對於大於0的元素相當於floor,對於小於0的元素相當於ceil。
4、使用round函式可以把資料四捨五入到最近的整數。
5、round還可以帶有第二個引數,精確到位數。負數表示四捨五入到小數點左側多少位,正數表示小數點右側。0表示精確到個位,預設。
6、當round帶有第三個引數'significant'時,第二個參數列示精確位數。如圖表示每個元素均取2位有效數字。
3樓:手機使用者
將那個i輸出線分0一t支q出來輸入i到一b個kto file的模組就好了d,如果要轉到execl中2的話將他們連結就好e┳
fft變換得到的頻譜圖的縱軸代表什麼
4樓:石頭王石頭
橫座標代表頻率,縱座標代表幅值,例如:
y=fft(x);
f=(0:length(x)-1)*n/length(x);
plot(f,abs(y));
希望能幫助你,如有什麼問題可以繼續問我
5樓:地獄咆哮
橫座標頻率所對應的大小
6樓:匿名使用者
代表橫軸頻率一一對應的該頻率的幅值
給分吧。謝謝!
matlab中進行fft譜分析,如何將頻譜圖的橫座標轉換成頻率?
7樓:楊好巨蟹座
一.呼叫方法
x=fft(x);
x=fft(x,n);
x=ifft(x);
x=ifft(x,n)
用matlab進行譜分析時注意:
(1)函式fft返回值的資料結構具有對稱性。
例:n=8;
n=0:n-1;
xn=[4 3 2 6 7 8 9 0];
xk=fft(xn)
→xk =
39.0000 -10.7782 + 6.
2929i 0 - 5.0000i 4.7782 - 7.
7071i 5.0000 4.7782 + 7.
7071i 0 + 5.0000i -10.7782 - 6.
2929i
xk與xn的維數相同,共有8個元素。xk的第一個數對應於直流分量,即頻率值為0。
(2)做fft分析時,幅值大小與fft選擇的點數有關,但不影響分析結果。在ifft時已經做了處理。要得到真實的振幅值的大小,只要將得到的變換後結果乘以2除以n即可。
二.fft應用舉例
例1:x=0.5*sin(2*pi*15*t)+2*sin(2*pi*40*t)。取樣頻率fs=100hz,分別繪製n=128、1024點幅頻圖。
clf;
fs=100;n=128; %取樣頻率和資料點數
n=0:n-1;t=n/fs; %時間序列
x=0.5*sin(2*pi*15*t)+2*sin(2*pi*40*t); %訊號
y=fft(x,n); %對訊號進行快速fourier變換
mag=abs(y); %求得fourier變換後的振幅
f=n*fs/n; %頻率序列
subplot(2,2,1),plot(f,mag); %繪出隨頻率變化的振幅
xlabel('頻率/hz');
ylabel('振幅');title('n=128');grid on;
subplot(2,2,2),plot(f(1:n/2),mag(1:n/2)); %繪出nyquist頻率之前隨頻率變化的振幅
xlabel('頻率/hz');
ylabel('振幅');title('n=128');grid on;
%對訊號取樣資料為1024點的處理
fs=100;n=1024;n=0:n-1;t=n/fs;
x=0.5*sin(2*pi*15*t)+2*sin(2*pi*40*t); %訊號
y=fft(x,n); %對訊號進行快速fourier變換
mag=abs(y); %求取fourier變換的振幅
f=n*fs/n;
subplot(2,2,3),plot(f,mag); %繪出隨頻率變化的振幅
xlabel('頻率/hz');
ylabel('振幅');title('n=1024');grid on;
subplot(2,2,4)
plot(f(1:n/2),mag(1:n/2)); %繪出nyquist頻率之前隨頻率變化的振幅
xlabel('頻率/hz');
ylabel('振幅');title('n=1024');grid on;
執行結果:
fs=100hz,nyquist頻率為fs/2=50hz。整個頻譜圖是以nyquist頻率為對稱軸的。並且可以明顯識別出訊號中含有兩種頻率成分:
15hz和40hz。由此可以知道fft變換資料的對稱性。因此用fft對訊號做譜分析,只需考察0~nyquist頻率範圍內的福頻特性。
若沒有給出取樣頻率和取樣間隔,則分析通常對歸一化頻率0~1進行。另外,振幅的大小與所用取樣點數有關,採用128點和1024點的相同頻率的振幅是有不同的表現值,但在同一幅圖中,40hz與15hz振動幅值之比均為4:1,與真實振幅0.
5:2是一致的。為了與真實振幅對應,需要將變換後結果乘以2除以n。
例2:x=0.5*sin(2*pi*15*t)+2*sin(2*pi*40*t),fs=100hz,繪製:
(1)資料個數n=32,fft所用的取樣點數nfft=32;
(2)n=32,nfft=128;
(3)n=136,nfft=128;
(4)n=136,nfft=512。
clf;fs=100; %取樣頻率
ndata=32; %資料長度
n=32; �t的資料長度
n=0:ndata-1;t=n/fs; %資料對應的時間序列
x=0.5*sin(2*pi*15*t)+2*sin(2*pi*40*t); %時間域訊號
y=fft(x,n); %訊號的fourier變換
mag=abs(y); %求取振幅
f=(0:n-1)*fs/n; %真實頻率
subplot(2,2,1),plot(f(1:n/2),mag(1:n/2)*2/n); %繪出nyquist頻率之前的振幅
xlabel('頻率/hz');ylabel('振幅');
title('ndata=32 nfft=32');grid on;
ndata=32; %資料個數
n=128; %t採用的資料長度
n=0:ndata-1;t=n/fs; %時間序列
x=0.5*sin(2*pi*15*t)+2*sin(2*pi*40*t);
y=fft(x,n);
mag=abs(y);
f=(0:n-1)*fs/n; %真實頻率
subplot(2,2,2),plot(f(1:n/2),mag(1:n/2)*2/n); %繪出nyquist頻率之前的振幅
xlabel('頻率/hz');ylabel('振幅');
title('ndata=32 nfft=128');grid on;
ndata=136; %資料個數
n=128; �t採用的資料個數
n=0:ndata-1;t=n/fs; %時間序列
x=0.5*sin(2*pi*15*t)+2*sin(2*pi*40*t);
y=fft(x,n);
mag=abs(y);
f=(0:n-1)*fs/n; %真實頻率
subplot(2,2,3),plot(f(1:n/2),mag(1:n/2)*2/n); %繪出nyquist頻率之前的振幅
xlabel('頻率/hz');ylabel('振幅');
title('ndata=136 nfft=128');grid on;
ndata=136; %資料個數
n=512; �t所用的資料個數
n=0:ndata-1;t=n/fs; %時間序列
x=0.5*sin(2*pi*15*t)+2*sin(2*pi*40*t);
y=fft(x,n);
mag=abs(y);
f=(0:n-1)*fs/n; %真實頻率
subplot(2,2,4),plot(f(1:n/2),mag(1:n/2)*2/n); %繪出nyquist頻率之前的振幅
xlabel('頻率/hz');ylabel('振幅');
title('ndata=136 nfft=512');grid on;
結論:(1)當資料個數和fft採用的資料個數均為32時,頻率解析度較低,但沒有由於添零而導致的其他頻率成分。
(2)由於在時間域內訊號加零,致使振幅譜中出現很多其他成分,這是加零造成的。其振幅由於加了多個零而明顯減小。
(3)fft程式將資料截斷,這時解析度較高。
(4)也是在資料的末尾補零,但由於含有訊號的資料個數足夠多,fft振幅譜也基本不受影響。
對訊號進行頻譜分析時,資料樣本應有足夠的長度,一般fft程式中所用資料點數與原含有訊號資料點數相同,這樣的頻譜圖具有較高的質量,可減小因補零或截斷而產生的影響。
例3:x=cos(2*pi*0.24*n)+cos(2*pi*0.26*n)
(1)資料點過少,幾乎無法看出有關訊號頻譜的詳細資訊;
(2)中間的圖是將x(n)補90個零,幅度頻譜的資料相當密,稱為高密度頻譜圖。但從圖中很難看出訊號的頻譜成分。
(3)訊號的有效資料很長,可以清楚地看出訊號的頻率成分,一個是0.24hz,一個是0.26hz,稱為高解析度頻譜。
可見,取樣資料過少,運用fft變換不能分辨出其中的頻率成分。新增零後可增加頻譜中的資料個數,譜的密度增高了,但仍不能分辨其中的頻率成分,即譜的解析度沒有提高。只有資料點數足夠多時才能分辨其中的頻率成分。
對於matlab已建好的simulink控制模組,如何直接轉
設定好你的輸入輸出訊號 使用控制工具箱的線性化工具 matlab中如何用simulink對系統的開環傳遞函式進行 先開啟simulink,新建模型檔案,然後從模組庫裡拖出傳遞函式模組,雙擊,設定傳遞函式的表示式,你這種最好用零極點模型,然後在拖出來一個延遲模組,雙擊設定延遲時間tao。接著把這兩個模...
給定平面任意兩點的座標(x1,y1)和(x2,y2)求這兩點之間的距離(保留兩位小數)輸出形式兩點間的距離
c語言程式如下 include include int main float x1,y1 float x2,y2 float distance float x,y x fabs x1 x2 y fabs y1 y2 distance sqrt x x y y printf 2f n distance...
matlab中的logspacea,b,n究竟怎麼理解
看看這個你就bai理du解了。vec2 logspace 0,5,6 vec2 1 10 100 1000 10000 100000 從10的0次方 到zhi10的5次方,共dao6個點。版 這次再看看你原來權的 format long vec2 logspace 0,10,6 vec2 1.0e ...