声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 662|回复: 4

[编程技巧] 请教这个程序怎么简化

[复制链接]
发表于 2008-3-26 09:53 | 显示全部楼层 |阅读模式

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

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

x
k=0
for i=1:1:length(x)-1
if x(i,4)<0 x(i,3)*x(i+1,3)<=0
   k=k+1
   m(k)=x(i,1)
   n(k)=x(i,2)
    end
end
plot(m(:),n(:),'.'')
由于length(x)比较大,所以运算起来十分的耗时间,不知道有没有什么办法可以优化一下,谢谢了
回复
分享到:

使用道具 举报

发表于 2008-3-26 10:54 | 显示全部楼层
用矢量化的思想,自己在置顶帖中找找相关例子,然后摸索一下,估计用 .* 和 find 等可以实现

[ 本帖最后由 ChaChing 于 2010-4-25 16:18 编辑 ]
 楼主| 发表于 2008-3-27 15:14 | 显示全部楼层

回复 2楼 的帖子

嗯,多谢你的热心回复。

问题解决了,谢谢eight:@P 。运算速度不知快了几千倍焉。
分享一下我的程序,虽然很粗糙,嘿嘿;@P
x1=x(1:1:length(x)-1,4);   %x(:,4)中从第1个到倒数第二个数值取出
x2=x(2:1:length(x),4);      %x(:,4)中从第2个到最后一个数值取出
l=x1.*x2;                            %对应的项做乘积

k=1;
for i=1:1:length(x)-1            %找出小于零的点
    if l(i)<0;
        j(k)=x(i,1);
        h(k)=x(i,2);
        k=k+1
    end
end

[ 本帖最后由 ChaChing 于 2010-4-25 16:19 编辑 ]

评分

1

查看全部评分

发表于 2008-3-27 15:47 | 显示全部楼层
后面的 for 循环应该可以再优化,不过如果速度已经可以接受,那不作也罢

[ 本帖最后由 ChaChing 于 2010-4-25 16:21 编辑 ]
 楼主| 发表于 2008-3-27 19:30 | 显示全部楼层

回复 5楼 的帖子

嗯,速度已经可以了,几分钟就搞定了。谢谢你的提示
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-10-2 12:18 , Processed in 0.056234 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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