matlab 卷积

matlab 卷积,第1张

你那么写还是有问题的,应为matlab的数组下标是从1开始的,所以定义x1和h1有问题,应该从1开始,只是在作图的时候向左移动一个单位就行了。

关于R20(n)这是信号系统和数字信号处理处理里面的一种常用信号——单位脉冲序列,他表示在

n=0,1,2,3,。。。,一直到19这20个整数点上有值且值为1的离散信号。

两个题的代码如下,作图也做了,看的时候注意画图时从0开始的哦!!!

x=zeros(1,20)

for n=1:20

x(n+1)=x(n)+0.9^n

end

h=zeros(1,10)

for n=1:10

h(n)=1

end

y=conv(x,h)

n=0:(length(x)+length(h)-2)

subplot(211)stem(n,y)

xlabel('时间序号n')ylabel('幅植')

title('卷积')

x1=zeros(1,12)

for n=1:12

x1(n)=0.8

end

h1=zeros(1,6)

for n=1:6

h1(n)=1

end

y1=conv(x1,h1)

n1=0:(length(x1)+length(h1)-2)

subplot(212)stem(n1,y1)

xlabel('时间序号n1')ylabel('幅植')

title('卷积2')

function c = convolution(a,b) 

  M= length(a)   %a序列的长度 

  N=length(b)   %b序列的长度   

  c=zeros(1,N+M-1)  %用来存放卷积的结果 

  for n = 2:(M+N)     %卷积之后的索引本应该的范围 

     tmp_max=min(n-1,M)  %根据求和表达式,由1=<k<=M   且 1=<n-k<=N

     tmp_min=max(n-N,1)  %确定最终求和变量k的取值

     for k =tmp_min:1:tmp_max

        c(n-1) = c(n-1) +a(k)*b(n-k) %求和,同时由于c从1开始索引, 

        %将n的范围2:M+N 

        %对应到c的1:M+N-1中去 

     end 

   end

测试:

>>x = 1:9

>>y=2:8

>>convolution(x,y)

ans =

   2     7    16    30    50    77   112   147   182   197   200   190   166   127    72


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7725463.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-09
下一篇 2023-04-09

发表评论

登录后才能评论

评论列表(0条)

保存