一维向量卷积的MATLAB实现

作者:11-20
作者:老李

convolution

公式:
F ( x ) = f ( x ) g ( x ) = + f ( t ) g ( x t ) d t F(x)=f(x)*g(x) = \int_{-\infty }^{+\infty}f(t)g(x-t)dt
离散情况先下,我们假设 f ( x ) f(x) g ( x ) g(x) 的自变量是有限个的,分别为m和n。

那么,我们可以认为, F ( x ) F(x) 中自变量的个数为m+n-1个。

我们常常在概率论中和的分布看到这部分内容。
我们假设 f ( x ) f(x) g ( x ) g(x) 在R上都有定义,在m和n意外的地方取值为0,在离散情况下我们可以表达为
F ( r ) = t f ( t ) g ( r t ) F(r) =\sum_{t}^{ }f(t)*g(r-t)

我们在编写程序的时候,需要考虑到3种情况,我们假设m>n。
2 < = r < = n ; 2<=r<=n; n < r < = m ; n<r<=m; m < r < = m + n m<r<=m+n

代码如下:

%convolution for vector 1xm and 1xn
%m > n
%r from 2 to m+n

m = 9;
n = 7;
K = zeros(1,m+n);
M = ones(1,m);
N = ones(1,n);

for r=2:n
    K(r) = sum(M(1:r-1).*fliplr(N(1:r-1)));
end

for r = n+1:m
    K(r) = sum(M(r-n:r-1).*fliplr(N(1:n)));
end

for r = m+1:m+n
    K(r) = sum(M(r-n:m).*fliplr(N(r-m:n)));
end

最后的结果如下:
在这里插入图片描述
卷积成功

发布了31 篇原创文章 · 获赞 6 · 访问量 2807

猜你喜欢

转载自blog.csdn.net/weixin_29732003/article/details/103176376
今日推荐