序列逆Z变换的Matlab实现
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• 序列的N点DFT的物理意义: 对X(ejω)在[0,2π]上进行N 点的等间隔取样。 • 函数fft用于快速计算离散傅里叶变换,调用方式为
– >>y= fft(x); – >>y= fft(x, N);
• y= fft(x)利用FFT算法计算序列x的离散傅里叶变换。
– 当x为矩阵时,y为矩阵x每一列的FFT。 – 当x长度为2的整数次幂时,函数fft采用基-2的FFT算法,否则采 用混合基算法。
程序运行结果
FFT N=45 150 150 FFT N=50 100 100
50
50
0
0
2
4 FFT N=55
6
8
0
0
2
4 FFT N=60
6
8
150
150
100
100
50
50
0
0
2
4
6
8
0
0
2
4
6
8
从图中可以看出,这几种情况下均有较好的精度。 从图中可以看出,这几种情况下均有较好的精度。
程序运行结果分析
例:利用FFT实现线性卷积 利用 实现线性卷积
利用FFT实现线性卷积。已知序列 实现线性卷积。 例:利用 实现线性卷积 已知序列x(n)= R4(n), , 求: 函数求x(n)与x(n)的线性卷积 的线性卷积y(n),并绘 (1)用conv函数求 ) 函数求 与 的线性卷积 , 出图形; 出图形; 点循环卷积y1(n),并绘出 (2)用FFT求x(n)与x(n)的4点循环卷积 ) 求 与 的 点循环卷积 , 图形; 图形; 点循环卷积y2(n),并将结 (3)用FFT求x(n)与x(n)的8点循环卷积 ) 求 与 的 点循环卷积 , 果与( )比较,说明线性卷积与循环卷积之间的关系。 果与(1)比较,说明线性卷积与循环卷积之间的关系。 程序如下: 解 程序如下:
>>N1= 4; N2= 8; n1= 0:1:N1-1;n2= 0:1:N2-1; x= [1,1,1,1]; % 构造序列 构造序列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) stem(0:1:length(y1)-1,y1),grid on; title('x(n)与x(n)线性卷积 线性卷积') 与 线性卷积
%计算 计算N=55的FFT并绘出其幅频曲线 计算 的 并绘出其幅频曲线 N=55;n=0:N-1;t=0.01*n; q=n*2*pi/N; x=2*sin(4*pi*t)+5*cos(8*pi*t); y=fft(x,N); figure(1) subplot(2,2,3) plot(q,abs(y)) title('FFT N=55')
程序运行结果
时 时 时 时 x(n) 1 0.8 0.6 0.4 0.2 0 0 1 1.5 5点 点 点 点 点 点 点 点
0.5
0
5
10
15
20
0
5
10
15
20
20点 点 点 点 点 点 点 点 1.5
1
0.5
0
0
5
10
15
20
四、 用FFT进行谱分析的 进行谱分析的Matlab实现 实现 进行谱分析的
程序运行结果为 •留数: 1 留数: -1 •极点: 1.0000 0.5000 极点: •系数项: 系数项:
X ( z) = 1 − z −1 − 1 − 0.5 z −1
逆Z变换为
x(n) = u (n) − (0.5) n u (n)
物理意义的Matlab实现 二、DFT物理意义的 物理意义的 实现
X ( z) = 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));
即
4π 8π x( n) = 2 cos n + 5 cos n 100 100
为周期序列,周期 为周期序列,周期N=50。 。 将程序中plot改为 改为stem函数,则可以更清楚地看出频谱。 函数, 将程序中 改为 函数 则可以更清楚地看出频谱。
修改程序运行结果
FFT N=45 150 150 FFT N=50 100 100
50
50
0
0
2
4 FFT N=55
6
8
0
0
2
4 FFT N=60
6
8
150
150
100
100
50
50
0
0
2
4
6
8
0
0
2
4
6
%计算 计算N=60的FFT并绘出其幅频曲线 计算 的 并绘出其幅频曲线 N=60;n=0:N-1;t=0.01*n; q=n*2*pi/N; x=2*sin(4*pi*t)+5*cos(8*pi*t); y=fft(x,N); figure(1) subplot(2,2,4) plot(q,abs(y)) title('FFT N=60')
(2.98)
•
–
函数residuez基本调用方式: 函数residuez基本调用方式: >>[r,p,c]= residuez(b,a);
输入参数: b=[ 输入参数: b=[b0, b1, …, bM]为分子多项式的系数, a=[a0, M]为分子多项式的系数, a=[ a1, …, aN]为分母多项式的系数,这些多项式都按z的降幂 N]为分母多项式的系数,这些多项式都按z 排列 输出参数: 是极点的留数,p是极点,c 输出参数: r是极点的留数,p是极点,c是无穷项多项式的系数 项,仅当M 项,仅当M≥N时存在。
•>>b= [0,1]; a= [2,-3,1]; % 多项式的系数 [2,•[r,p,c]= residuez(b,a); % 求留数、极点和系数项 •disp('留数:');disp(r'); disp('留数:');disp(r'); % 显示输出参数 •disp('极点:');disp(p'); disp('极点:');disp(p'); X(z)的部分分式形式为 •disp('系数项:');disp(c'); disp('系数项:');disp(c'); 1 1
分析: 进行取样可得, 分析:由t=0.01n进行取样可得,采样频率 进行取样可得 采样频率fs=100Hz。 。 而连续信号的最高模拟角频率为 =8 π ,由 =2 πf可 可 最高频率为8 得,最高频率为 π /2 π=4Hz。因此,满足采样定理的 。因此, 要求。 要求。 采样序列为
x ( n) = 2 cos(4π Tn) + 5 cos(8π Tn)
设模拟信号 x (t ) = 2 sin(4π t ) + 5 cos(8π t ) ,以 t= 0.01n (n=0: N-1) 进行取样,试用fft函数对其做频谱分析 函数对其做频谱分析。 分别为 分别为: 进行取样,试用 函数对其做频谱分析。N分别为:(1) N=45;(2) N=50;(3) N=55;(2) N=60。 ; ; ; 。 程序清单如下 %计算 计算N=45的FFT并绘出其幅频曲线 计算 的 并绘出其幅频曲线 N=45;n=0:N-1;t=0.01*n; q=n*2*pi/N; x=2*sin(4*pi*t)+5*cos(8*pi*t); y=fft(x,N); figure(1) subplot(2,2,1) plot(q,abs(y)) title('FFT N=45')
程序运行结果图
点点 x(n)
1 0.8 0.6 2 0.4 0.2 0 1 0 4 3 x(n)与 x(n)线线线线
0
0.5
1
1.5
2
2.5
3
0
1
2
3ቤተ መጻሕፍቲ ባይዱ
4
5
6
x(n)与 x(n)点 4点点点线线 4 3 2 1 0 4 3 2 1 0
x(n)与 x(n)点 8点点点线线
0
0.5
1
1.5
2
2.5
3
0
2
变换的Matlab实现 一、序列逆Z变换的 序列逆 变换的 实现
• 函数residuez: 函数residuez: 适合计算离散系统有理函数的留数和极 点,可以用于求解序列的逆Z 点,可以用于求解序列的逆Z变换。
M −N b0 + b1 z −1 + L + bM z − M B( z ) N Rk X ( z) = = =∑ + ∑ Ck z − k −1 −N −1 a0 + a1 z + L + aN z A( z ) k =1 1 − pk z k =0
程序清单
%计算 计算N=50的FFT并绘出其幅频曲线 计算 的 并绘出其幅频曲线 N=50;n=0:N-1;t=0.01*n; q=n*2*pi/N; x=2*sin(4*pi*t)+5*cos(8*pi*t); y=fft(x,N); figure(1) subplot(2,2,2) plot(q,abs(y)) title('FFT N=50')
• y= fft(x, N)采用N点FFT。
– 当序列x长度小于N时,函数fft自动对序列尾部补零,构成N点数 据; – 当x长度大于N时,函数fft自动截取序列前面N点数据进行FFT。
• 函数ifft用于快速计算向量或矩阵的离散 傅里叶逆变换,与函数fft的调用规则基 本相同。 • 调用方式为
– >>y= ifft(x); – >>y= ifft(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点循环卷积 点循环卷积') 与 的 点循环卷积 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点循环卷积 点循环卷积') 与 的 点循环卷积
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点取样恢复的序列 点取样恢复的序列') 点取样恢复的序列
–
例:计算逆Z变换 计算逆 变换
例 :计算 X ( z ) =
z 的逆Z变换。 的逆Z变换。 2 2 z − 3z + 1
−1
z 0+ z 解: 有理分式X(z) 分子和分母 X ( z ) = 有理分式X = 2 z 2 − 3 z + 1 2 − 3 z −1 + z −2 多项式都按z 多项式都按z的降幂排列。
4
6
8
频域取样定理的Matlab实现 三、 频域取样定理的 实现
例: 设x(n)=(0.7)n·u(n),在单位圆上以 ,在单位圆上以M=5和M=20, 和 , 对其Z变换取样 研究时域信号受M变化的影响 变换取样, 变化的影响。 对其 变换取样,研究时域信号受 变化的影响。 进行Z (1)对x(n)进行 变换; ) 进行 进行等角取样, (2)对X(z)进行等角取样,取样点数为 ,求X(k); ) 进行等角取样 取样点数为M, ; 进行IDFT变化,得到 点序列,请比较几 变化, 点序列, (3)对X(k)进行 ) 进行 变化 得到M点序列 个序列,并作分析。 个序列,并作分析。 解 x(n)=(0.7)n·u(n)的Z变换为 的 变换为
– >>y= fft(x); – >>y= fft(x, N);
• y= fft(x)利用FFT算法计算序列x的离散傅里叶变换。
– 当x为矩阵时,y为矩阵x每一列的FFT。 – 当x长度为2的整数次幂时,函数fft采用基-2的FFT算法,否则采 用混合基算法。
程序运行结果
FFT N=45 150 150 FFT N=50 100 100
50
50
0
0
2
4 FFT N=55
6
8
0
0
2
4 FFT N=60
6
8
150
150
100
100
50
50
0
0
2
4
6
8
0
0
2
4
6
8
从图中可以看出,这几种情况下均有较好的精度。 从图中可以看出,这几种情况下均有较好的精度。
程序运行结果分析
例:利用FFT实现线性卷积 利用 实现线性卷积
利用FFT实现线性卷积。已知序列 实现线性卷积。 例:利用 实现线性卷积 已知序列x(n)= R4(n), , 求: 函数求x(n)与x(n)的线性卷积 的线性卷积y(n),并绘 (1)用conv函数求 ) 函数求 与 的线性卷积 , 出图形; 出图形; 点循环卷积y1(n),并绘出 (2)用FFT求x(n)与x(n)的4点循环卷积 ) 求 与 的 点循环卷积 , 图形; 图形; 点循环卷积y2(n),并将结 (3)用FFT求x(n)与x(n)的8点循环卷积 ) 求 与 的 点循环卷积 , 果与( )比较,说明线性卷积与循环卷积之间的关系。 果与(1)比较,说明线性卷积与循环卷积之间的关系。 程序如下: 解 程序如下:
>>N1= 4; N2= 8; n1= 0:1:N1-1;n2= 0:1:N2-1; x= [1,1,1,1]; % 构造序列 构造序列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) stem(0:1:length(y1)-1,y1),grid on; title('x(n)与x(n)线性卷积 线性卷积') 与 线性卷积
%计算 计算N=55的FFT并绘出其幅频曲线 计算 的 并绘出其幅频曲线 N=55;n=0:N-1;t=0.01*n; q=n*2*pi/N; x=2*sin(4*pi*t)+5*cos(8*pi*t); y=fft(x,N); figure(1) subplot(2,2,3) plot(q,abs(y)) title('FFT N=55')
程序运行结果
时 时 时 时 x(n) 1 0.8 0.6 0.4 0.2 0 0 1 1.5 5点 点 点 点 点 点 点 点
0.5
0
5
10
15
20
0
5
10
15
20
20点 点 点 点 点 点 点 点 1.5
1
0.5
0
0
5
10
15
20
四、 用FFT进行谱分析的 进行谱分析的Matlab实现 实现 进行谱分析的
程序运行结果为 •留数: 1 留数: -1 •极点: 1.0000 0.5000 极点: •系数项: 系数项:
X ( z) = 1 − z −1 − 1 − 0.5 z −1
逆Z变换为
x(n) = u (n) − (0.5) n u (n)
物理意义的Matlab实现 二、DFT物理意义的 物理意义的 实现
X ( z) = 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));
即
4π 8π x( n) = 2 cos n + 5 cos n 100 100
为周期序列,周期 为周期序列,周期N=50。 。 将程序中plot改为 改为stem函数,则可以更清楚地看出频谱。 函数, 将程序中 改为 函数 则可以更清楚地看出频谱。
修改程序运行结果
FFT N=45 150 150 FFT N=50 100 100
50
50
0
0
2
4 FFT N=55
6
8
0
0
2
4 FFT N=60
6
8
150
150
100
100
50
50
0
0
2
4
6
8
0
0
2
4
6
%计算 计算N=60的FFT并绘出其幅频曲线 计算 的 并绘出其幅频曲线 N=60;n=0:N-1;t=0.01*n; q=n*2*pi/N; x=2*sin(4*pi*t)+5*cos(8*pi*t); y=fft(x,N); figure(1) subplot(2,2,4) plot(q,abs(y)) title('FFT N=60')
(2.98)
•
–
函数residuez基本调用方式: 函数residuez基本调用方式: >>[r,p,c]= residuez(b,a);
输入参数: b=[ 输入参数: b=[b0, b1, …, bM]为分子多项式的系数, a=[a0, M]为分子多项式的系数, a=[ a1, …, aN]为分母多项式的系数,这些多项式都按z的降幂 N]为分母多项式的系数,这些多项式都按z 排列 输出参数: 是极点的留数,p是极点,c 输出参数: r是极点的留数,p是极点,c是无穷项多项式的系数 项,仅当M 项,仅当M≥N时存在。
•>>b= [0,1]; a= [2,-3,1]; % 多项式的系数 [2,•[r,p,c]= residuez(b,a); % 求留数、极点和系数项 •disp('留数:');disp(r'); disp('留数:');disp(r'); % 显示输出参数 •disp('极点:');disp(p'); disp('极点:');disp(p'); X(z)的部分分式形式为 •disp('系数项:');disp(c'); disp('系数项:');disp(c'); 1 1
分析: 进行取样可得, 分析:由t=0.01n进行取样可得,采样频率 进行取样可得 采样频率fs=100Hz。 。 而连续信号的最高模拟角频率为 =8 π ,由 =2 πf可 可 最高频率为8 得,最高频率为 π /2 π=4Hz。因此,满足采样定理的 。因此, 要求。 要求。 采样序列为
x ( n) = 2 cos(4π Tn) + 5 cos(8π Tn)
设模拟信号 x (t ) = 2 sin(4π t ) + 5 cos(8π t ) ,以 t= 0.01n (n=0: N-1) 进行取样,试用fft函数对其做频谱分析 函数对其做频谱分析。 分别为 分别为: 进行取样,试用 函数对其做频谱分析。N分别为:(1) N=45;(2) N=50;(3) N=55;(2) N=60。 ; ; ; 。 程序清单如下 %计算 计算N=45的FFT并绘出其幅频曲线 计算 的 并绘出其幅频曲线 N=45;n=0:N-1;t=0.01*n; q=n*2*pi/N; x=2*sin(4*pi*t)+5*cos(8*pi*t); y=fft(x,N); figure(1) subplot(2,2,1) plot(q,abs(y)) title('FFT N=45')
程序运行结果图
点点 x(n)
1 0.8 0.6 2 0.4 0.2 0 1 0 4 3 x(n)与 x(n)线线线线
0
0.5
1
1.5
2
2.5
3
0
1
2
3ቤተ መጻሕፍቲ ባይዱ
4
5
6
x(n)与 x(n)点 4点点点线线 4 3 2 1 0 4 3 2 1 0
x(n)与 x(n)点 8点点点线线
0
0.5
1
1.5
2
2.5
3
0
2
变换的Matlab实现 一、序列逆Z变换的 序列逆 变换的 实现
• 函数residuez: 函数residuez: 适合计算离散系统有理函数的留数和极 点,可以用于求解序列的逆Z 点,可以用于求解序列的逆Z变换。
M −N b0 + b1 z −1 + L + bM z − M B( z ) N Rk X ( z) = = =∑ + ∑ Ck z − k −1 −N −1 a0 + a1 z + L + aN z A( z ) k =1 1 − pk z k =0
程序清单
%计算 计算N=50的FFT并绘出其幅频曲线 计算 的 并绘出其幅频曲线 N=50;n=0:N-1;t=0.01*n; q=n*2*pi/N; x=2*sin(4*pi*t)+5*cos(8*pi*t); y=fft(x,N); figure(1) subplot(2,2,2) plot(q,abs(y)) title('FFT N=50')
• y= fft(x, N)采用N点FFT。
– 当序列x长度小于N时,函数fft自动对序列尾部补零,构成N点数 据; – 当x长度大于N时,函数fft自动截取序列前面N点数据进行FFT。
• 函数ifft用于快速计算向量或矩阵的离散 傅里叶逆变换,与函数fft的调用规则基 本相同。 • 调用方式为
– >>y= ifft(x); – >>y= ifft(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点循环卷积 点循环卷积') 与 的 点循环卷积 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点循环卷积 点循环卷积') 与 的 点循环卷积
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点取样恢复的序列 点取样恢复的序列') 点取样恢复的序列
–
例:计算逆Z变换 计算逆 变换
例 :计算 X ( z ) =
z 的逆Z变换。 的逆Z变换。 2 2 z − 3z + 1
−1
z 0+ z 解: 有理分式X(z) 分子和分母 X ( z ) = 有理分式X = 2 z 2 − 3 z + 1 2 − 3 z −1 + z −2 多项式都按z 多项式都按z的降幂排列。
4
6
8
频域取样定理的Matlab实现 三、 频域取样定理的 实现
例: 设x(n)=(0.7)n·u(n),在单位圆上以 ,在单位圆上以M=5和M=20, 和 , 对其Z变换取样 研究时域信号受M变化的影响 变换取样, 变化的影响。 对其 变换取样,研究时域信号受 变化的影响。 进行Z (1)对x(n)进行 变换; ) 进行 进行等角取样, (2)对X(z)进行等角取样,取样点数为 ,求X(k); ) 进行等角取样 取样点数为M, ; 进行IDFT变化,得到 点序列,请比较几 变化, 点序列, (3)对X(k)进行 ) 进行 变化 得到M点序列 个序列,并作分析。 个序列,并作分析。 解 x(n)=(0.7)n·u(n)的Z变换为 的 变换为