一維信號頻譜圖仿真——matlab
阿新 • • 發佈:2017-11-09
font 要求 16px cnblogs 折線圖 nbsp 0.00 頻譜 足夠
程序1:
%在MATLAB中是用連續信號在等時間間隔點的樣值來近似地表示連續信號的,當采樣時間間隔足夠小時,這些離散的采樣值就能較好地近似出連續信號,matlab中連續信號的顯示實際上還是離散信號的顯示,只是取樣點特別 %多的時候,用線連接起來,顯示出來的圖形就比較圓滑,接近連續信號;如果取樣點特別少,連接起來就會變成折線; clear all; %這個其實可以沒有,只不過以前出過問題,現在就加上! N=1024; %這個是你舉得信號的點數,隨便你了 fs=16000; %這個是抽樣頻率,記得要高於信號中最高頻率的2倍 t=(0:N-1)/fs;%信號時域橫軸向量,以等間隔抽樣時間1/fs為一系列時間點做橫向坐標軸,因為信號的周期為1/20,即0.05s,而1024點的抽樣時間為20.48s,所以畫出來的圖形大概為400多個周期,周期太多,太集中 t1=(0:3)/fs; %顯示出來後,看起來就像正方形。而且抽樣時間為0.02,一個周期為0.05,所以一個周期內就取了3個點,一個周期的圖形顯示出來後明顯是個折線圖;如圖subplot(1,3,3);如果一個周期內多取一些點,圖形就會越 t2=0:0.000001:0.05;%接近原圖形,如圖subplot(1,4,4); f=(0:N-1)*fs/N; %信號頻域橫軸向量,不過待會要減半處理一下 x=sin(2*pi*125.*t); %想分析什麽函數,自己寫 x1=sin(2*pi*20.*t1); x2=sin(2*pi*20.*t2); y=abs(fft(x)); %頻域分析,不過記得要求模 f=f(1:N/2); %減半了,根據那奎斯特抽樣定理,抽樣頻率要高於信號中最高頻率的兩倍,才不會失真,因此頻譜中(fs/2,fs)為無用譜,故頻域信號的定義域向量與值域向量都應該做減半處理。 y=y(1:N/2); %減半了 %subplot(2,2,1) %畫圖 %plot(t,x); %subplot(2,2,2) %畫圖 plot(f,y); %subplot(2,2,3) %plot(t1,x1); %subplot(2,2,4) %plot(t2,x2);
程序2:
% 在MATLAB中是用連續信號在等時間間隔點的樣值來近似地表示連續信號的,當采樣時間間隔足夠小時,這些離散的采樣值就能較好地近似出連續信號,matlab中連續信號的顯示實際上還是離散信號的顯示,只是取樣點特別
%多的時候,用線連接起來,顯示出來的圖形就比較圓滑,接近連續信號;如果取樣點特別少,連接起來就會變成折線;
clear all; %這個其實可以沒有,只不過以前出過問題,現在就加上!
N=1024; %這個是你舉得信號的點數,隨便你了
fs=50; %這個是抽樣頻率,記得要高於信號中最高頻率的2倍
t=(0:N-1)/fs;%信號時域橫軸向量,以等間隔抽樣時間1/fs為一系列時間點做橫向坐標軸,因為信號的周期為1/20,即0.05s,而1024點的抽樣時間為20.48s,所以畫出來的圖形大概為400多個周期,周期太多,太集中
t1=(0:3)/fs; %顯示出來後,看起來就像正方形。而且抽樣時間為0.02,一個周期為0.05,所以一個周期內就取了3個點,一個周期的圖形顯示出來後明顯是個折線圖;如圖subplot(2,2,3);如果一個周期內多取一些點,圖形就會越
t2=0:0.000001:0.05;%接近原圖形,如圖subplot(2,2,4);
f=(0:N-1)*fs/N; %信號頻域橫軸向量,不過待會要減半處理一下
x=sin(2*pi*20.*t); %想分析什麽函數,自己寫
x1=sin(2*pi*20.*t1);
x2=sin(2*pi*20.*t2);
y=abs(fft(x)); %頻域分析,不過記得要求模
f=f(1:N/2); %減半了,根據那奎斯特抽樣定理,抽樣頻率要高於信號中最高頻率的兩倍,才不會失真,因此頻譜中(fs/2,fs)為無用譜,故頻域信號的定義域向量與值域向量都應該做減半處理。
y=y(1:N/2); %減半了
subplot(2,2,1) %畫圖
plot(t,x);
subplot(2,2,2) %畫圖
plot(f,y);
subplot(2,2,3)
plot(t1,x1);
subplot(2,2,4)
plot(t2,x2);
一維信號頻譜圖仿真——matlab