声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2080|回复: 5

[综合讨论] 提问:我的matlab程序求卷积运行得不出结果

[复制链接]
发表于 2010-1-10 23:55 | 显示全部楼层 |阅读模式

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

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

x
论文中需要用一点matlab,很浅的,就是用matlab来求卷积,我没有用matlab7.0自带的conv卷积函数,因为我的论文中的卷积公式简化了一些,可是卷入20个左右耗时为1分钟,到32个的话我大概估计了一下可能要2^12分钟,所以我最多能得到卷入26个单元时的结果(1小时左右),再多就吃不消了,可是总归还是需要算出32个单元卷入的结果的,我查了相关帮助,也特意将matlab6.5换成7.0,为了用其自带的阶跃函数(解析式里需要用的),都是为了减少运行时间,可是还是没有什么效果。我到底哪里出错了?请各位大虾指点指点,谢谢,程序如下:

主程序:
x=5000;
n=32;
L=zeros(1,32);
for i=1:n
    L(i)=FT(i,x);
end
L(n)
子函数:
function f=FT(i,x)
q=[0.1000 0.1034 0.0977 0.0909 0.0909 0.0873 0.0873 0.0873 0.0756 0.0756 0.0756 0.0756 0.0756 0.0654 0.0535 0.0535 0.0535 0.0535 0.0535 0.0741 0.0741 0.0741 0.0741 0.0741 0.0741 0.0741 0.0331 0.0331 0.0331 0.0331 0.0331 0.0331];
p=[0.9000 0.8966 0.9023 0.9091 0.9091 0.9127 0.9127 0.9127 0.9244 0.9244 0.9244 0.9244 0.9244 0.9346 0.9465 0.9465 0.9465 0.9465 0.9465 0.9259 0.9259 0.9259 0.9259 0.9259 0.9259 0.9259 0.9669 0.9669 0.9669 0.9669 0.9669 0.9669];
C=[1000 900 700 600 600 500 500 500 400 400 400 400 400 300 200 200 200 200 200 100 100 100 100 100 100 100 100 100 100 100 100 100];

if i==1;
    f=q(i)*heaviside(x)+p(i)*heaviside(x-C(i));
elseif i>=2 & i<=32
    f=q(i)*FT(i-1,x)+p(i)*FT(i-1,x-C(i));
end

其中n是控制有多少个单元卷入的变量,第i次卷积都需要将前面第i-1次卷积重新算一遍,可是也不用这么多时间吧,费解。。。

本帖被以下淘专辑推荐:

回复
分享到:

使用道具 举报

发表于 2010-1-11 08:32 | 显示全部楼层
因该是子函数反复调用自己占的时间太多了。
发表于 2010-1-11 17:01 | 显示全部楼层
求卷积用conv函数,矩阵卷积用convmtx
 楼主| 发表于 2010-1-11 19:25 | 显示全部楼层

回复 沙发 friendchj 的帖子

恩,我估计也是这个原因,可是不知道怎么回避这个问题。我有想过用自带的函数conv来求卷积,但是原理上也是反复调用conv这个子函数不是么?
如:之前我是用matlab6.5,没有阶跃函数,所以自己编了一个阶跃函数,后来怕这个会占用太多时间,改为7.0版本,自带有heaviside这个阶跃函数,但是问题还是存在。
而且conv是求离散的卷积函数吧,我这里是连续的,后面还要涉及到画图的问题,那得多少个点啊,一个点都求这么久。
 楼主| 发表于 2010-1-11 23:17 | 显示全部楼层
我今天调了一晚上,还是不行,尝试了使用conv函数,发现conv函数只能做离散卷积。可是我的函数都是连续的,不能直接用conv吧?还是很迷惑中。各位如果有熟悉这方面的还请帮帮忙~
这段代码不是效率问题,如果只是慢一点也就罢了,可是根本就算不出32的结果来,挂了2,3个小时都没结果。。。
发表于 2010-1-12 00:08 | 显示全部楼层
个人水平有限, 不清楚LZ所谓"函数都是连续的"!?
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-11-18 18:30 , Processed in 0.068509 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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