离散时间信号的卷积和运算
离散时间信号的卷积和运算
卷积是用来计算系统零状态响应的有力工具,由于系统的零状态响应是激励与系统的单位取样响应的卷积,因此卷积运算在离散时间信号处理领域被广泛使用。在 MATLAB 中,函数conv 用于计算两个离散序列的卷积,其调用格式为:
- c = conv(a,b),
- a、b分别为待卷积的两个序列的向量表示;
- c 是向量卷积结果的向量表示,其长度为 a 与 b 的长度之和减1,即 length(c) = length(a) + length(b) -1
E_5_38.m:已知某系统的单位取样响应 h(n) = 0.9.^n.*[u(n)-u(n-9)],当激励信号为 x(n) = u(n)-u(n-4)时,求系统的零状态响应。
% E_5_38.m
% 已知某系统的单位取样响应 h(n) = 0.9.^n.*[u(n)-u(n-9)],
% 当激励信号为 x(n) = u(n)-u(n-4)时,求系统的零状态响应。
clear, clc, clf;
nx = -1:5;
nh = -2:10;
x = uDT(nx) - uDT(nx-4);
h = 0.9.^nh.*(uDT(nh) - uDT(nh-9));
y = conv(x,h);
ny1 = nx(1) + nh(1);
ny = ny1 + (0:(length(nx)+length(nh)-2));
subplot(131); stem(nx,x,"filled"); grid on;
xlabel('n'); ylabel('x(n)'); title('x(n)');
axis([-4 16 0 2]);
subplot(132); stem(nh,h,"filled"); grid on;
xlabel('n'); ylabel('h(n)'); title('h(n)');
axis([-4 16 0 2]);
subplot(133); stem(ny,y,"filled"); grid on;
xlabel('n'); ylabel('y(n)'); title('y(n)=x(n)*h(n)');
axis([-4 16 0 2]);
% E_5_39.m
% 已知序列求卷积结果示例
% clear, clc, clf;
figure;
% E_5_39.m
% 已知序列求卷积结果示例
x = [1,3,5,7];
y = [1,1,1,1];
z = conv(x,y);
disp(z); % 1 4 9 16 15 12 7
subplot(131); stem(0:length(x)-1,x);
ylabel('x(n)'); xlabel('n'); grid on;
subplot(132); stem(0:length(y)-1,y);
ylabel('y(n)'); xlabel('n'); grid on;
subplot(133); stem(0:length(z)-1,z);
ylabel('z(n)'); xlabel('n'); grid on;