matlab只能做離散數值計算(符號計算只是小部分),所以繪制上述信號圖形必須抽樣離散化(指定時長,抽樣頻率等),時域圖形可逐點畫出,頻域要做離散FFT後畫出。
根據那奎斯特抽樣定理,抽樣頻率要高於信號中最高頻率的兩倍,才不會失真,因此頻譜中(fs/2,fs)為無用譜,故頻域信號的定義域向量與值域向量都應該做減半處理
以sin(x)為例:
clear?all; %
N=1024; ? %信號的抽樣點數
fs=10; %抽樣頻率,高於信號中最高頻率的2倍
t=(0:N-1)/fs; ?
f=(0:N-1)*fs/N;
x=sin(2*pi.*t);?%待處理信號sin(x)=sin(2πft),f=1hz
y=abs(fft(x)); ?%FFT後求模
f=f(1:N/2); ? %減半
y=y(1:N/2); ? %減半
subplot(2,1,1) %畫圖
plot(t(1:2*fs),x(1:2*fs));?%只畫2個周期
subplot(2,1,2) %畫圖
plot(f,y);