数字信号处理实验(一) —— 线性卷积与循环卷积

前言

其实卷积可以说是DSP 数字信号处理的入门操作,

基本思路:我们想测试一个系统的性能,得到这个系统的传递函数,得到你信号的响应(response),说白了就是往系统里面扔信号,出来的东西是啥?我咋知道呢?

其实方法就是我扔个小石子 投石问路即可。 这里的小石子,就是一个最简单的脉冲信号 δ ( n ) \delta(n) δ(n),我放进去看看效果,这个效果就是脉冲响应 h ( n ) h(n) h(n)
那别的信号咋办?很简单,把你的源信号分解成一个个脉冲响应就行,这样,把所有的脉冲响应(线性)叠加起来就好了:)

那么 这和卷积有什么关系?卷积就是一个计算公式,就好像长方形面积就是底乘高。我们想要得到输出信号y(n) 可以将源信号与脉冲响应h(n)卷积:
y ( n ) = x ( n ) ∗ h ( n ) = Σ x ( m ) h ( n − m ) y(n)=x(n)*h(n)=\Sigma x(m)h(n-m) y(n)=x(n)h(n)=Σx(m)h(nm)

题目

在这里插入图片描述

循环偏移函数cirshiftd

%x 输入序列
%m 偏移值
%N 循环长度
%y 输出循环序列

function y=cirshiftd(x,m,N)
if length(x)>N
    error('x > N');
end
x=[x,zeros(1,N-length(x))];
n=[0:1:N-1];

y=x(mod(n-m,N)+1);

循环卷积函数circonv

function yc=circonv(x1,x2,N)

% 非法输入控制
if length(x1)>N
    error('N < x1');
end
if length(x2)>N
    error('N < x2');
end

x1 = [x1,zeros(1,N-length(x1))];
x2 = [x2,zeros(1,N-length(x2))];

n=[0:1:N-1];
x2=x2(mod(-n,N)+1);
H=zeros(N,N);

for n=1:1:N
    H(n,:)=cirshiftd(x2,n-1,N);
end

yc=x1*H';

总程序 运用循环卷积函数

% 输入序列
Xn=[1,2,3,4,5];
Hn=[1,2,1,2];

% 调用线性卷积、循环卷积的计算函数 进行多点循环卷积的运算
Yline=conv(Xn,Hn);
Yc5=circonv(Xn,Hn,5);
Yc6=circonv(Xn,Hn,6);
Yc9=circonv(Xn,Hn,9);
Yc10=circonv(Xn,Hn,10);

% 计算出横坐标序列长度 以便作图
Nyline=[0:1:length(Yline)-1];
Ny5=[0:1:length(Yc5)-1];
Ny6=[0:1:length(Yc6)-1];
Ny9=[0:1:length(Yc9)-1];
Ny10=[0:1:length(Yc10)-1];

% 将5张图放置于同一版面

% 线性卷积
subplot(5,1,1);
stem(Nyline,Yline,'r*');
axis([0,9,0,25]);
title('Linear convolution');
% 5点循环卷积
subplot(5,1,2);
stem(Ny5,Yc5,'r*');
axis([0,9,0,25]);
title('Circular convolution with N=5');
% 6点循环卷积
subplot(5,1,3);
stem(Ny6,Yc6,'r*');
axis([0,9,0,25]);
title('Circular convolution with N=6');
% 9点循环卷积
subplot(5,1,4);
stem(Ny9,Yc9,'r*');
axis([0,9,0,25]);
title('Circular convolution with N=9');
% 10点循环卷积
subplot(5,1,5);
stem(Ny10,Yc10,'r*');
axis([0,9,0,25]);
title('Circular convolution with N=10');

运行结果

在这里插入图片描述
工作区情况
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值