当前位置:首页 > 实验四 离散时间信号的傅里叶变换
实验四离散时间信号的傅里叶变换
1. 实验目的
(1)理解离散序列傅里叶变换的原理和方法。 (2)掌握快速傅里叶变换的原理和方法。 2. 实验原理
(1) 离散傅里叶变换(DFT)和快速傅里叶变换(FFT)
在MATLAB中,离散傅里叶正变换采用fft( )函数,离散傅里叶逆变换采用ifft( )函数。 调用格式为:
Xk=fft(x) 表示计算信号x的快速傅里叶变换Xk。 Xk=fft(x,N) 表示计算信号x的N点快速傅里叶变换。 xn=ifft(Xk)表示计算Xk的快速傅里叶逆变换xn。
Xn=ifft(Xk,N) 表示计算Xk的N点快速傅里叶逆变换xn。 另外,MATLAB中使用fftshift()函数来移动零频点到频谱中间,重新排列fft( )的输出结果,便于观察傅里叶变换。其调用格式为: X=fftshift(Xk)
(2) 离散时间系统的频率特性
在用MATLAB计算系统的频率响应时,可调用freqz( )函数进行求解,其调用格式为: H=freqz(b,a,w)
其中b为系统函数中分子多项式的系数向量,a为分母多项式的系数向量,w为角频率向量,向量H则返回在w所定义的频率点上系统函数的值。该函数还有其他调用形式 [h,w]=freqz(b,a,n)
该形式计算默认范围内n个频率点的系统函数的值(n的默认值为512)。 freqz(b,a)
该形式并不返回系统函数的值,而是以对数坐标的方式绘出系统频率响应曲线。 3. 实验内容
(1) 求有限长序列x[n]=(0.7e^(jpi/4))^n,0<=n<=16的傅里叶变换。
N=17; n=0:N-1;
x=(0.7*(exp(j*pi/4))).^n; X=fft(x,N);
stem(n,fftshift(X));grid on;
3.532.521.510.500246810121416
(2) 已知无限长序列x[n]=a^n*u[n](a=0.7),用fft( )计算其频谱。
a=0.7;N=51; n=0:N-1;
x=(a.^n).*heaviside(n); X=fft(x,N);
stem(n,fftshift(X));grid on;
32.521.510.5005101520253035404550
(3) 对于矩阵脉冲波序列x[n]=1(-M<=n<=M),0(n为其他值),自取M值用freqs( )函数求
幅度频谱。
N=51;M=8;
n=-(N-1)/2:(N-1)/2;
x=[ones(1,M+1),zeros(1,N-2*M-1),ones(1,M)];
X=fft(x,N);
[h w]=freqz(x,1,N,'whole'); subplot(211);stem(n,fftshift(X)); title('X');grid on;
subplot(212);stem(w/pi,fftshift(h)); xlabel('\\Omega/\\pi');grid on;
X20151050-5-2520151050-500.20.40.60.81?/?1.21.41.61.82-20-15-10-50510152025
对于题目要求的用freqz来求解幅度频谱,一开始不会用freqz函数,故先用fft函数来解题,然后对比用freqz做出来的结果。
共分享92篇相关文档