序列逆Z变换的Matlab实现
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• 函数ifft用于快速计算向量或矩阵的离散 傅里叶逆变换,与函数fft的调用规则基本 相同。
• 调用方式为
– >>y= ifft(x); – >>y= ifft(x, N);
例:利用FFT实现线性卷积
例:利用FFT实现线性卷积。已知序列x(n)= R4(n),
求: (1)用conv函数求x(n)与x(n)的线性卷积y(n),并绘
figure(1)
subplot(2,2,1);
% 画出原始时域信号
stem(n,x)
title('时域信号x(n)')
subplot(2,2,2);
xa= [xa,xa,xa,xa];
stem(n,xa)
title('5点取样恢复的序列')
subplot(2,2,3);
stem(n,xb)
title('20点取样恢复的序列')
例
:计算
X
(z)
2z
2
z 3z
1
的逆Z变换。
解: 有理分式X(z) 分子和分母 多项式都按z的降幂排列。
X
(z)
2z2
z 3z
1
2
Biblioteka Baidu
0 z1 3z1
z 2
•>>b= [0,1]; a= [2,-3,1]; % 多项式的系数
•[r,p,c]= residuez(b,a); % 求留数、极点和系数项
stem(0:1:length(y1)-1,y1),grid on;
title('x(n)与x(n)线性卷积')
X2= fft(x);
% 计算x(n)与x(n)的4点循环卷积
Y2= X2.*X2;
y2= ifft(Y2);
subplot(2,2,3)
stem(n1,y2),grid on;
title('x(n)与x(n)的4点循环卷积')
出图形; (2)用FFT求x(n)与x(n)的4点循环卷积y1(n),并绘出
图形; (3)用FFT求x(n)与x(n)的8点循环卷积y2(n),并将结
果与(1)比较,说明线性卷积与循环卷积之间的关系。
解 程序如下:
>>N1= 4; N2= 8;
n1= 0:1:N1-1;n2= 0:1:N2-1;
x= [1,1,1,1];
X3= fft(x1);
% 计算x(n)与x(n)的8点循环卷积
Y3= X3.*X3;
y3= ifft(Y3)
subplot(2,2,4)
stem(n2,y3),grid on;
title('x(n)与x(n)的8点循环卷积')
程序运行结果图
序 列 x(n) 1 0.8 0.6 0.4 0.2 0
% 构造序列x(n)
x1= [1,1,1,1,0,0,0,0]; % 在序列x(n)后补4个零
figure(1)
subplot(2,2,1)
stem(n1,x),grid on;
title('序列x(n)')
y1= conv(x,x);
% y1为x(n)与x(n)的线性卷积
subplot(2,2,2)
一、序列逆Z变换的Matlab实现
• 函数residuez: 适合计算离散系统有理函数的留数和极 点,可以用于求解序列的逆Z变换。
X
(z)
b0 a0
b1z1 L a1z1 L
bM zM aN zN
B(z) A(z)
N k 1
1
Rk pk z1
M N k 0
Ck
zk
(2.98)
• 函数residuez基本调用方式:
>>[r,p,c]= residuez(b,a);
– 输入参数: b=[b0, b1, …, bM]为分子多项式的系数, a=[a0, a1, …, aN]为分母多项式的系数,这些多项式都按z的降幂 排列
– 输出参数: r是极点的留数,p是极点,c是无穷项多项式的系数 项,仅当M≥N时存在。
例:计算逆Z变换
•disp('留数:');disp(r'); % 显示输出参数
•disp('极点:');disp(p'); •disp('系数项:');disp(c');
程序运行结果为
X(z)的部分分式形式为
X
(z)
1 1 z1
1
1 0.5 z 1
•留数: 1
-1
逆Z变换为
•极点: 1.0000 0.5000 •系数项:
(1)对x(n)进行Z变换;
(2)对X(z)进行等角取样,取样点数为M,求X(k); (3)对X(k)进行IDFT变化,得到M点序列,请比较几 个序列,并作分析。
解 x(n)=(0.7)n·u(n)的Z变换为
z X (z)
z 0.7
程序清单
>>n= 0:19; x= 0.7.^n; na= 0:4; za= exp(j*2*pi*na/5); % 在z平面的单位圆上对其进行5点的等角距取样 Xa= za./(za-0.7); xa= abs(ifft(Xa)); nb= 0:19; zb= exp(j*2*nb*pi/20); % 在z平面的单位圆上对其进行20点的等角距取样 Xb= zb./(zb-0.7); xb= abs(ifft(Xb));
x(n) u(n) (0.5)n u(n)
二、DFT物理意义的Matlab实现
• 序列的N点DFT的物理意义: 对X(ejω)在[0,2π]上进行N 点的等间隔取样。
• 函数fft用于快速计算离散傅里叶变换,调用方式为
– >>y= fft(x);
– >>y= fft(x, N);
• y= fft(x)利用FFT算法计算序列x的离散傅里叶变换。
程序运行结果
1 0.8 0.6 0.4 0.2
0 0
1.5
时 域 信 号 x(n)
– 当x为矩阵时,y为矩阵x每一列的FFT。 – 当x长度为2的整数次幂时,函数fft采用基-2的FFT算法,否则采
用混合基算法。
• y= fft(x, N)采用N点FFT。
– 当序列x长度小于N时,函数fft自动对序列尾部补零,构成N点数 据;
– 当x长度大于N时,函数fft自动截取序列前面N点数据进行FFT。
0 0.5 1 1.5 2 2.5 3 x(n)与 x(n)的 4点 循 环 卷 积
4
3
2
1
0 0 0.5 1 1.5 2 2.5 3
x(n)与 x(n)线 性 卷 积 4
3
2
1
0
0
1
2
3
4
5
6
x(n)与 x(n)的 8点 循 环 卷 积 4
3
2
1
0
0
2
4
6
8
三、 频域取样定理的Matlab实现
例: 设x(n)=(0.7)n·u(n),在单位圆上以M=5和M=20, 对其Z变换取样,研究时域信号受M变化的影响。