数字信号处理-卷积与相关(matlab)

基础知识

R1:序列的卷积:
c(n)=∑_(m=-∞)^∞▒〖a(m)b(n-m)〗
R2:序列的相关:
c(m)=∑_(n=-∞)^∞▒〖a(n)b(n-m)〗

Matlab计算卷积与相关

(1)详见《数字信号处理教程》第四版P53-P54,序列的卷积与相关。
(2)根据卷积定义,卷积运算分为4步:
翻褶:将b(m)以m=0的垂直轴为对称轴翻褶成b(-m);
移位:将b(-m)移位n,得到b(n-m), n>0时右移,n<0时左移;
相乘:将b(-m)与a(m)在相同的m处对应值相乘;
相加:将以上所有m处的乘积相加,这就得到一个n值下的c(n)。
对不同的n使用以上步骤,即可得到全部的c(n)值。根据该思路(不利用已有Matlab函数conv)编写卷积的Matlab实现函数。

图1 卷积过程及结果
举例:计算序列a(-1)=1,a(0)=1,a(1)=1(其他元素为零)和b(0)=2,b(1)=5,b(2)=1(其他元素为零)的卷积。计算过程和结果如图1所示。

分别利用自己编写的卷积函数与conv函数计算下列两个序列的卷积。

a(n)={-1,▁0,8,9}
b(n)={2,5,▁(-2),7,10}
(1) 利用系统自带conv函数计算卷积

function result = conv_s(x,ux,h,uh)
x_len = length(x);
h_len = length(h);
result = conv(x,h);  %直接用系统自带函数conv计算得到卷积
u = ux(1)+uh(1):ux(x_len)+uh(h_len)  %求下标

(2) 利用自己编写的函数计算卷积

function result = own_conv1(x,h,ux,uh)
x_len = length(x);
h_len = length(h);
%按照向量法—矩阵乘法进行卷积运算
h_set = zeros(x_len,h_len+x_len-1);
for i = 1:x_len
    h_set(i,i:i+h_len-1) = h; %得到H矩阵 
end
result = x*h_set;  %向量相乘即完成了翻折,移位,相乘,相加四步操作得到卷积结果
u = ux(1
  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值