MATLAB 求离散信号卷积

MATLAB 求离散信号卷积

代码如下:

function [C,Ck] = dt_convolution_advance(A,B,Ak,Bk)
% dt_convolution_advance 计算离散信号卷积
% A  输入信号
% B  输入信号
% Ak 输入信号A下标
% Bk 输入信号B下标
% C  输出信号
% Ck 输出信号C下标
% 计算输入信号AB的离散卷积并画出输出信号的杆状图
% calculate the discrete time convolution of the input signal A and B .
% then output the stem picture


[~,a]=size(A);        %输出矩阵A的列数
[~,b]=size(B);        %输出矩阵B的列数
C=zeros(1,a+b-1);     %预定义输出矩阵
A_=zeros(1,a+b-1);    

B_=zeros(1,a+b-1);    

for i=1:a+b-1         %A的长度拉长到与C相等,多余的补0
    if i<=a
        A_(i)=A(i);
    else
        A_(i)=0;
    end
end

for i=1:a+b-1         %B的长度拉长到与C相等,多余的补0
    if i<=b
        B_(i)=B(i);
    else
        B_(i)=0;
    end
end

%% 计算卷积 
%C的第i个值等于A_的前i个值与B_的对应的前i个值的乘积和
%注意计算乘积和时的序号 A(k)应与B(i+1-k)相乘
for i=1:a+b-1
    for k=1:i
    tempt=A_(k)*B_(i-k+1);
    C(i)=C(i)+tempt;
    end
end

%% 
Ck=Ak(1)+Bk(1):Ak(end)+Bk(end); %计算结果的下标

%% 作图
stem(Ck,C); 
xlabel('n');
ylabel('y(n)');

end

应用demo:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

果壳小旋子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值