(1)進一步加深DTFT、DFT和z 變化的演演算法原理和基本性質的理解。
(2)熟悉系統的頻率響應和傳輸函數。
(3)學習用FFT對時域離散訊號進行譜分析的方法,瞭解可能出現的問題,以便在實際中正確應用FFT。
(1)訊號的頻域表示
(2)頻率響應
(3)傳輸函數
(1)編寫程式產生以下典型訊號:
(2)N = 8和N= 16分別對(1)中所給出的訊號逐個進行頻譜分析,觀察幅頻特性。
(1)在實驗報告中簡述實驗目的和實驗原理要點。
(2)在實驗報告中附上實驗過程記錄的各典型訊號的幅頻特性曲線,與理論結果比較並分析誤差產生的原因以及用FFT譜分析時有關引數的選擇方法。
(3)總結實驗中的主要結論。
Problem1_1,2
clear
x1=[];m=0:7;x2=[];
for n=0:3;
xa=n+1;
xb=4-n;
x1=[x1 xa];
x2=[x2 xb];
end
for n=4:7;
xa=8-n;
xb=n-3;
x1=[x1 xa];
x2=[x2 xb];
end
figure(1)
subplot(211)
stem(m,x1);%%繪製火柴梗,產生離散訊號
xlabel('Time index n');
ylabel('Amplitude');
title('Original time-domain sequence x1 LEI');
subplot(212)
stem(m,x2);%%繪製火柴梗,產生離散訊號
xlabel('Time index n');
ylabel('Amplitude');
title('Original time-domain sequence x2 LEI');
%DFT
N=input('N=');
k=0:N-1;
X1=fft(x1,N);%%傅立葉變換
X2=fft(x2,N);%%傅立葉變換
figure(2)
subplot(211)
stem(k,abs(X1));%%繪製火柴梗,產生離散訊號
xlabel('Frequency index k');
ylabel('Amplitude');
title('Magnitude of the DFT samples X1 LEI');
subplot(212)
stem(k,abs(X2));%%繪製火柴梗,產生離散訊號
xlabel('Frequency index k');
ylabel('Amplitude');
title('Magnitude of the DFT samples X2 LEI');
Problem1_3,4
clear
N=input('N=');
n=0:N-1;
x3=cos(pi*n/4);
x4=sin(pi*n/4);
figure(1)
subplot(211)
stem(n,x3);%%繪製火柴梗,產生離散訊號
xlabel('Time index n');
ylabel('Amplitude');
title('Original time-domain sequence x3 LEI');
subplot(212)
stem(n,x4);%%繪製火柴梗,產生離散訊號
xlabel('Time index n');
ylabel('Amplitude');
title('Original time-domain sequence x4 LEI');
%DFT
X3=fft(x3,N);%%傅立葉變換
X4=fft(x4,N);%%傅立葉變換
k=0:N-1;
figure(2)
subplot(211)
stem(k,abs(X3));%%繪製火柴梗,產生離散訊號
xlabel('Frequency index k');
ylabel('Amplitude');
title('Magnitude of the DFT samples X3 LEI');
subplot(212)
stem(k,abs(X4));%%繪製火柴梗,產生離散訊號
xlabel('Frequency index k');
ylabel('Amplitude');
title('Magnitude of the DFT samples X4 LEI');
Problem3
clear
N=input('N=');
n=0:N-1;
k=0:N-1;
x3=cos(pi*n/4);
x4=sin(pi*n/4);
x=x3+x4;
X=fft(x,N);%%傅立葉變換
X31=real(X);%%複數的實部
X41=imag(X);%%複數的虛部
figure(1)
subplot(211)
stem(k,abs(X31));%%繪製火柴梗,產生離散訊號
xlabel('Time index k');
ylabel('Amplitude');
title('Original time-domain sequence X31 LEI');
subplot(212)
stem(k,abs(X41));%%繪製火柴梗,產生離散訊號
xlabel('Time index k');
ylabel('Amplitude');
title('Original time-domain sequence X41 LEI');
Problem4
clear
N=input('N=');
n=0:N-1;
k=0:N-1;
x3=cos(pi*n/4);
x4=sin(pi*n/4);
xa=x3+i*x4;
xb=x3-i*x4;
Xa=fft(xa,N);%%傅立葉變換
Xb=fft(xb,N);%%傅立葉變換
X32=0.5*(Xa+Xb);
X42=0.5*(Xa-Xb);
figure(1)
subplot(211)
stem(k,abs(X32));%%繪製火柴梗,產生離散訊號
xlabel('Time index k');
ylabel('Amplitude');
title('Original time-domain sequence X32 LEI');
subplot(212)
stem(k,abs(X42));%%繪製火柴梗,產生離散訊號
xlabel('Time index k');
ylabel('Amplitude');
title('Original time-domain sequence X42 LEI');
Problem5_ac
clear
k=256;
num=[0.9 -0.45 0.35 0.002];
den=[1 0.71 -0.46 -0.62];
w=0:pi/(k-1):pi;
h=freqz(num,den,w);%%計算頻率響應
figure(1)
subplot(211)
plot(w/pi,abs(h));%%幅頻特性曲線
title('f(t)的幅頻特性曲線 LEI');
xlabel('w');
ylabel('幅度');
subplot(212)
plot(w/pi,angle(h));%%相頻特性曲線
title('f(t)的相頻曲線 LEI');
xlabel('w');
ylabel('相位(弧度)');
figure(2)
[z,p,k]=tf2zp(num,den);%%求得有理分式形式的系統轉移函數的零、極點
zplane(num,den);%%繪製零極點
title('零極點圖 LEI');
Problem5_b
clear
n=40;
k=0:1:n-1;
num=[0.9 -0.45 0.35 0.002];
den=[1 0.71 -0.46 -0.62];
y1=impz(num,den,n);%%系統衝激響應
x1=[1 2 0 -0.5];
y=conv(y1,x1);%%計算折積
subplot(211)
stem(y)
title('線性折積 LEI');
l=length(x1)+length(y1)-1;
X=fft(x1,1);%%傅立葉變換
H=fft(y1',1);
Y=X.*H;
yy=real(ifft(Y,1));%%FFT逆變換
subplot(212)
stem(yy)
xlabel('n');
ylabel('y(n)');
title('Made by LEI');
本人能力有限,解釋尚不清楚明瞭,如遇任何問題,大家可留言或私信。後續將程式檔案打包上傳,供大家學習使用。
本文希望對大家有幫助,當然上文若有不妥之處,歡迎指正。
分享決定高度,學習拉開差距