卷积(convolution)与相关(correlation)(matlab 实现)
1. 卷积(convolution)
输出 y(n) 是作为在 x(k) 和 h(n−k)(反转和移位)重叠之下的样本和求出的。
考虑下面两个序列:
- x(n)=[3,11,7,0,−1,4,2],−3≤n≤3
- h(n)=[2,3,0,−5,2,1],−1≤n≤4
求卷积 y(n)=x(n)⋆h(n)
matlab 实现:
如果是任意无限长序列,不可以直接用 matlab 来计算卷积,matlab 内部实现了一个函数 conv 来计算两个有限长序列之间的卷积。conv 函数规定这两个序列都在 n=0 开始并利用:
>> y = conv(x, h);
y =
6 31 47 6 -51 -5 41 18 -22 -3 8 2
然而,conv 函数不提供也不接受任何定时信息,必须要求 y(n) 的一个起始点和一个结束点。已知有限长序列 x(n) 和 h(n),很容易做如下定义:
function [y, ny] = conv_t(x, nx, y, ny)
ny = xb(1)+hb(1):xe(1)+he(1);
y = conv(x, h);