声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1634|回复: 9

[综合讨论] 求助:matlab做卷积的时候

[复制链接]
发表于 2009-6-7 21:26 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
两个函数卷积的时候,其中一个函数做线性变化,比如,一个三角波函数和一个方形波函数卷积,方波函数的幅值在卷积平移的时候按线性关系变大,问这个卷积怎么做呀?

本帖被以下淘专辑推荐:

回复
分享到:

使用道具 举报

发表于 2009-6-8 16:14 | 显示全部楼层
不太明白你的意思,按你所说,把方波改为梯形波不就满足 幅值在卷积平移的时候按线性关系变大,这样让三角波与梯形波做卷积不就可以了吗?
 楼主| 发表于 2009-6-8 17:34 | 显示全部楼层
谢谢主任的答复!我的意思是  a=1 2 3 2 1  b=1 1 1  卷积平移的时候 每移动一次,b发生一次变化->变成2 2 2  然后是3 3 3 以此类推。  求和相加没有问题,但是要用conv  函数  如何实现?

[ 本帖最后由 www999888 于 2009-6-8 17:36 编辑 ]
发表于 2009-6-8 19:15 | 显示全部楼层
cc=cov(a,b)
 楼主| 发表于 2009-6-8 21:28 | 显示全部楼层
状元公,cov是协方差啊?!

而且,那个b是要变化的啊。
发表于 2009-6-8 21:49 | 显示全部楼层

回复 板凳 www999888 的帖子

建议你用求和相加吧,conv应该没有此功能。
或者
z=conv([1 2 3 4],[1 1 1]);
re(1)=z(1);
z=conv([1 2 3 4],[2 2 2]);
re(2)=z(2)
……

[ 本帖最后由 friendchj 于 2009-6-8 22:28 编辑 ]
发表于 2009-6-9 07:41 | 显示全部楼层
for i=1:N
       b=i*ones(3,1);
       cc(i)=conv(a,b);
end
 楼主| 发表于 2009-6-9 15:04 | 显示全部楼层
谢谢 主任和状元公的答复。
有朋友提出下面的方法
i=1:n
c=i(n:-1:1).*conv(a,b)

我觉得对。您二位看看,行吗?
发表于 2009-6-9 15:20 | 显示全部楼层
clear
clc
a=[1 2 3];
b=[1 1 1];
n=length(a)+length(b)-1;
re=zeros(1,n);
for i=1:n
    z=conv(a,i*b);
    re(i)=z(i);
end
i=1:n;
re1=i(n:-1:1).*conv(a,b);
re2=i.*conv(a,b);
disp([re;re1;re2])
%%%%%%%%%%%%%
1     6    18    20    15
5    12    18    10     3
1     6    18    20    15
 楼主| 发表于 2009-6-10 10:51 | 显示全部楼层
弄明白了。谢谢主任!:handshake
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-6-26 22:12 , Processed in 0.055154 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表