实验七  离散信号的频域分析
1.实验目的
  1)掌握离散信号DTFTDFT的计算的MATLAB实现。
  2)验证DFTDTFT的关系。
3)验证DFT圆周卷积定理。
 
2.实验原理
  1DTFT的计算
      序列x(n)DTFT的连续函数。在MATLAB中只能以数值形式计算其在给定区间中离散频率点上的值。可以用函数freqz计算,调用格式如下:
        [X,w] = freqz(x,1,N);[X,w] = freqz(x,1,N,'whole')X=freqz(x,1,w)
      第一种格式求出的是0~π之间的频谱,第二种格式求出的是0~2π之间的频谱。第三种格式求的是指定频率w对应的频谱值。
式子中,x为时间序列,N是欲求的频谱值的个数,X是频谱值,w为对应的频率值,两者均为列向量。如果x是有限长序列,可求得精确值;如果x是无限长序列,求得的是近似值。
  2DFT计算
      序列x(n)DFT可以用函数fft计算,调用格式如下:
        X = fft(x,N);
其中,x为时间序列,NDFT的点数,XxDFT值。如果N与序列长度相等,可以省略,此时调用格式为:X = fft(x);
  3DFTDTFT的关系
长度为L的序列的NDFT与其DTFT的关系为
根据这个关系,可以得到计算DFT的另一种方法:
X = freqz(x,1,N, 'whole');
4DFT圆周卷积定理
圆周卷积定理:
3.实验内容及其步骤
  1)序列x={1,2,3,4},x-π~π之间的DTFT,画出幅度谱和相位谱。
      提示:用函数freqzabsanglesubplotplot
      部分参考代码:
      x= [1 2 3 4];
w=linspace(-pi,pi,500);
X=freqz(x,1,w);
  2)分别用两种方法求上述序列的8DFT16DFT并画图比较。
      提示:用函数fftfreqzsubplotplothold on
      部分参考代码:
X1 = fft(x,8);%8FFT
X2 =freqz(x,1,8,'whole');%利用DTFTDFT
subplot(211);
plot(X1,'o');
hold on;
plot(X2,'+');
(3) 用序列x1={1,2,3,4}和序列x2={4,3,2,1}来验证圆周卷积性质。
圆周卷积可以用以下函数求得:
function y = circconv(x1,x2,N)
K = length(x1);
M = length(x2);
L = K+M-1;
x1 = x1(:).';
x2 =x2(:).';
y1=conv(x1,x2);
if N >=L
    y = [y1,zeros(1,N-L)];
else
    m=L-N;
    y2 = circshift(y1,m);
    y3 = [y2(1:m),zeros(1,N-m)];
    y = y1(1:N)+y3;
end
函数中调用的circshift代码如下:
function y=circshift(x,m)
% y=x((n-m))
N = length(x)
if abs(m)>N
    m= rem(m,N);linspace函数调用的格式为
end
n=0:N-1;
y=x(mod(n-m,N)+1);
提示:
分别计算x1x2DFT,相乘,求逆(ifft),将结果与圆周卷积的序列比较。
4.实验用MATLAB函数介绍
    用到的函数有:
freqzlinspce,fft,ifft,subplot,plot,abs,angle,xlabel,title,hold on,conv,length,rem,mod等。
5. 思考题
  1)如果,如何比较精确的求出其DTFT
(2) 利用圆周卷积的矩阵形式,重新写一个计算圆周卷积的函数。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。