利用现有函数或者定义求卷积

数字信号处理实验课老师让用原始定义求卷积,对于我这种小菜鸡来说感觉好难,挣扎了好久才写出来。

第一个是用来conv函数。

function juanji
%利用conv求卷积
 
nx=-1:5;
nh=-2:10;
% x=SF(nx)-SF(nx-5);
x=cos(2*pi*0.1*nx).*[SF(nx-1)-SF(nx-6)];
h=(7/8).^nh.*SF(nh)-SF(nh-10);
y=conv(x,h);
ny1=nx(1)+nh(1);%卷积起点
ny=ny1+(0:(length(nx)+length(nh)-2));%卷积终点
 
subplot(3,1,1);
stem(nx,x,'fill');
grid on;
% xlabel('n'),title('x(n)=u(n)-u(n-5)');
xlabel('n'),title('cos(2*pi*0.1*nx)*[u(n-1)-u(n-6)]');
axis([-4 16 -2 3]);
 
subplot(3,1,2);
stem(nh,h,'fill');
grid on;
xlabel('n'),title('h(n)=(7/8)^n*[u(n)-u(n-10)]');
axis([-4 16 -2 3]);
 
subplot(3,1,3);
stem(ny,y,'fill');
grid on;
xlabel('n'),title('y(n)=x(n)*h(n)');
axis([-4 16 -2 5]);

 这个是利用向量-矩阵法做的,我之前在CSDN里面搜好像没有这样子算的,可能是比较偏吧,但是我觉得比一次一次迭代好想多了。

function juanji1
%利用定义(向量-矩阵法)求卷积
 
nx=-1:5;
nh=-2:10;
% x=SF(nx)-SF(nx-5);
x=cos(2*pi*0.1*nx).*[SF(nx-1)-SF(nx-6)];
h=(7/8).^nh.*SF(nh)-SF(nh-10);
 
ny1=nx(1)+nh(1);%卷积起点
L=length(nx)+length(nh)-1;%卷积长度
M=length(nx);%x(n)长度
ny=ny1+(0:L-1);%卷积终点
h(1,L)=0;
H=h;
for i=1:M-1
    c=[zeros(1,i),h(1:L-i)];
    H=[H;c];
end
y=x*H;
 
subplot(3,1,1);
stem(nx,x,'fill');
grid on;
% xlabel('n'),title('x(n)=u(n)-u(n-5)');
xlabel('n'),title('cos(2*pi*0.1*nx)*[u(n-1)-u(n-6)]');
axis([-4 16 -2 3]);
 
subplot(3,1,2);
h=(7/8).^nh.*SF(nh)-SF(nh-10);
stem(nh,h,'fill');
grid on;
xlabel('n'),title('h(n)=(7/8)^n*[u(n)-u(n-10)]');
axis([-4 16 -2 3]);
 
subplot(3,1,3);
stem(ny,y,'fill');
grid on;
xlabel('n'),title('y(n)=x(n)*h(n)');
axis([-4 16 -2 5]);

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值