【MATLAB】 1.1 序列的卷积运算

120 阅读1分钟

一 基本概念

离散卷积

对于线性时不变系统(Linear Time-Invariant System,或 L.T.I 系统),输入和输出之间的关系为:当系统输入序列为 x(n)x(n),系统的单位脉冲响应为 h(n)h(n),则系统输出为 y(n)y(n)

y(n)=m=+x(m)h(nm)=x(n)h(n)y(n) = \sum_{m=-\infty}^{+\infty} x(m) h(n - m) = x(n) * h(n)

或者 y(n)=m=+h(m)x(nm)=h(n)x(n)y(n) = \sum_{m=-\infty}^{+\infty} h(m) x(n - m) = h(n) * x(n)

上述公式称为离散卷积线性卷积

Q:为什么更换了x(n)为h(n)却没有影响呢?

A:卷积运算具有交换性(也称为对称性),即对于任何两个序列 x(n)x(n)h(n)h(n),等式成立:x(n)h(n)=h(n)x(n)x(n) * h(n) = h(n) * x(n),卷积的运算结果是对两个序列之间的“重叠”求和,所以无论我们先将 x(n)x(n) 反转并平移,再与 h(n)h(n) 相乘;还是先将 h(n)h(n) 反转并平移,再与 x(n)x(n) 相乘,最后的结果都是一样的。

二 基本例题

用MATLAB计算序列 {-2 0 1 –1 3} 和序列 {1 2 0 -1} 的离散卷积

代码区:

% 定义两个序列
x = [-2 0 1 -1 3];  % 序列 x,表示第一个输入序列
h = [1 2 0 -1];     % 序列 h,表示第二个输入序列

% 计算卷积
y = conv(x, h);     % 使用 MATLAB 的 conv 函数计算序列 x 和 h 的离散卷积

% 显示结果
disp('两个序列的离散卷积结果为:');       % 显示提示文本,说明以下输出为卷积结果
disp(y);                             % 显示卷积结果 y

% 绘制卷积结果
figure;                   % 创建一个新图形窗口
stem(y, 'filled');        % 使用 stem 函数绘制离散卷积结果,并用填充点表示每个值
title('序列的离散卷积');    % 设置图形标题
xlabel('n');              % 设置 x 轴标签为 'n',表示离散序列的索引
ylabel('Amplitude');      % 设置 y 轴标签为 'Amplitude',表示幅度
grid on;                  % 打开网格显示,使图形更清晰

截屏区:

image.png