实验名称:离散时间信号的频域分析
一、实验目的
1.对离散信号和系统在频域中进行分析,可以进一步研究它们的性质。学会通过matlab,对离散时间序列的三种表示方法:离散时间傅里叶变换(DTFT)、离散傅里叶变换(DFT)和Z变换。
二、实验内容
1、修改程序P3.1,计算如下有限长序列的离散时间傅里叶变换:
g[n]=[1357911131517]
并重做习题Q3.2。讨论你的结果。你能解释相位谱中的跳变吗?
2、选取两个改变了长度的序列以及两个不同的时移值,重做习题Q3.7
3、编写一个MATLAB程序,用一个N点复数离散傅里叶变换计算两个长度为N的实数序列的N点离散傅里叶变换,并将结果同直接使用两个N点离散傅里叶变换得到的结果进行比较。
4、选取两个不同的时移量,重做习题Q3.33
5、选取两个不同长度的序列,重做习题Q.33
6、选取另外两组等长序列重做习题Q3.36
三、主要算法与程序
1、w=-4*pi:8*pi/511:4*pi;
num=[1357911131517];den=[1];
h=freqz(num,den,w);
%Plot the DTFT
subplot(2,2,1)
plot(w/pi,real(h));grid
title('H(e^{j\omega})的实部')
xlabel('\omega/\pi');
ylabel('振幅');
subplot(2,2,2)
plot(w/pi,imag(h));grid
title('H(e^{j\omega})的虚部')
xlabel('\omega/\pi');
ylabel('振幅');
subplot(2,2,3)
plot(w/pi,abs(h));grid
title('|H(e^{j\omega})|幅度谱')
xlabel('\omega/\pi');
ylabel('振幅');
subplot(2,2,4)
plot(w/pi,angle(h));grid
title('[H(e^{j\omega})]相位谱')
xlabel('\omega/\pi');
ylabel('以弧度为单位的相位');
2、(1)序列为[9123456789],时移为30; %离散时间傅立叶变换的时移性质
clf;
w=-pi:2*pi/255:pi;wo=0.4*pi;D=30;
num=[9123456789];
h1=freqz(num,1,w);
h2=freqz([zeros(1,D)num],1,w);
subplot(2,2,1)
plot(w/pi,abs(h1));grid
title('原序列的幅度谱')
xlabel('\omega/\pi');
ylabel('振幅');
subplot(2,2,2)
plot(w/pi,abs(h2));grid
title('时移D=30后序列的幅度谱')
xlabel('\omega/\pi');
ylabel('振幅');
subplot(2,2,3)
plot(w/pi,angle(h1));grid
title('原序列的相位谱')
xlabel('\omega/\pi');
ylabel('振幅');
subplot(2,2,4)
plot(w/pi,angle(h2));grid
title('时移D=30后序列的相位谱')
xlabel('\omega/\pi');
ylabel('振幅');
(2)序列为[12345678910],时移为50;
D=50;
num=[12345678910];
3、clf;
g=[1124];
h=[2321];
x=g+i*h;
N=length(x)-1;n=0:N;
gk=fft(g);
hk=fft(h);
xk=fft(x);
xk1=fft(conj(x));
gk1=(xk+xk1)/2;
hk1=(xk-xk1)/2i;
subplot(4,2,1)
stem(n,abs(gk));grid
title('实部序列gk的离散傅里叶变换的幅度')
xlabel('时间序号n');ylabel('振幅');
subplot(4,2,2)
stem(n,abs(hk));grid
title('虚部序列gk的离散傅里叶变换的幅度')
xlabel('时间序号n');ylabel('振幅');
subplot(4,2,3)
stem(n,abs(gk1));grid
title('通过xk得到的gk1的离散傅里叶变换的幅度') xlabel('时间序号n');ylabel('振幅');
subplot(4,2,4)
stem(n,abs(hk1));grid
title('通过xk得到的hk1的离散傅里叶变换的幅度') xlabel('时间序号n');ylabel('振幅');
subplot(4,2,5)
stem(n,angle(gk));grid
title('实部序列gk的离散傅里叶变换的相位')
xlabel('时间序号n');ylabel('以弧度为单位的相位'); subplot(4,2,6)
stem(n,angle(hk));gridmatlab傅里叶变换的幅度谱和相位谱
title('虚部序列hk的离散傅里叶变换的相位')
xlabel('时间序号n');ylabel('以弧度为单位的相位'); subplot(4,2,7)
stem(n,angle(gk1));grid
title('通过xk得到的gk1的离散傅里叶变换的相位') xlabel('时间序号n');ylabel('以弧度为单位的相位'); subplot(4,2,8)
stem(n,angle(hk1));grid
title('通过xk得到的hk1的离散傅里叶变换的相位') xlabel('时间序号n');ylabel('以弧度为单位的相位');
4、function y=circshift(x,M)
if abs(M)>length(x)
M=rem(M,length(x));
end
if M<0
M=M+length(x);
end
y=[x(M+1:length(x))x(1:M)];
%离散傅里叶变换的圆周时移性质,时移为10
x=[0246810121416];
N=length(x)-1;n=0:N;
y=circshift(x,10);
XF=fft(x);
YF=fft(y);
subplot(2,2,1);
stem(n,abs(XF));grid
title('原序列的离散傅里叶变换的幅度');
xlabel('时间序号n');ylabel('振幅');
subplot(2,2,2);
stem(n,abs(YF));grid
title('圆周移位10后的序列的离散傅里叶变换的幅度'); xlabel('时间序号n');ylabel('振幅');
subplot(2,2,3);
stem(n,angle(XF));grid
title('原序列的离散傅里叶变换的相位');
xlabel('时间序号n');ylabel('相位');
subplot(2,2,4);
stem(n,angle(YF));grid
title('圆周移位10后的序列的离散傅里叶变换的相位'); xlabel('时间序号n');ylabel('相位');
%离散傅里叶变换的圆周时移性质,时移为20
y=circshift(x,20);
5、序列为x=[0246810121416],时移为10;
序列为x=[02468101214161820],时移为10;
6、function y=circonv(x1,x2)
L1=length(x1);L2=length(x2);
if L1~=L2,error('长度不相等的序列'),end
y=zeros(1,L1);
x2tr=[x2(1)x2(L2:-1:2)];
for k=1:L1
sh=circshift(x2tr,1-k);
h=x1.*sh;
y(k)=sum(h);
end
%离散傅里叶变换的圆周卷积
g1=[1234567];g2=[21-12-113];
ycir=circonv(g1,g2);
disp('圆周卷积的结果');disp(ycir)
G1=fft(g1);G2=fft(g2);
yc=real(ifft(G1.*G2));
disp('离散傅里叶变换乘积的离散傅里叶逆变换的结果=');disp(yc)四、实验结果与分析
图1
图2.1
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论