MATLAB 自编函数—用于卷积conv运算横坐标的确定

卷积运算

一般来说,在使用MATLAB的conv函数进行卷积运算时,我们的输入序列都是从n=0时刻开始的,设两个序列的长度为N1和N2,则得到的卷积序列的长度为N1+N2-1,其对应的横坐标范围就是0:1:N1+N2-1-1。

当两个序列的起始位置不为0时,得到的卷积结果坐标需要专门去确定。这里自编一个函数get_bound来解决这个问题,和conv一起使用效果很好。

代码实现

function [ bound ] = get_bound( n1, n2 )
%GET_BOUND 获得序列卷积的横坐标范围
%   输入:两个序列的横坐标范围
%   输出:卷积之后的横坐标范围
    leftbound = n1(1) + n2(1);
    Len = length(n1)+length(n2)-1;
    rightbound = Len - 1 + leftbound;
    bound = leftbound:1:rightbound;
end

使用举例

% 例子:
% 计算sin(n/2)0.5^n的卷积(3<=n<4*pi)

n = -3:1:4*pi;
f1n = sin(n/2);
f2n = power(0.5, n);
yn = conv(f1n, f2n);
n_ = get_bound(n, n);
stem(n_, yn); title('卷积图像');
axis([-inf, inf, min(yn)*1.2, max(yn)*1.2]);

在这里插入图片描述

发布了14 篇原创文章 · 获赞 4 · 访问量 9320

猜你喜欢

转载自blog.csdn.net/Ocean_waver/article/details/103243946