zhailiangjun 发表于 2008-3-26 09:53

请教这个程序怎么简化

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)比较大,所以运算起来十分的耗时间,不知道有没有什么办法可以优化一下,谢谢了

eight 发表于 2008-3-26 10:54

用矢量化的思想,自己在置顶帖中找找相关例子,然后摸索一下,估计用 .* 和 find 等可以实现

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

zhailiangjun 发表于 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 编辑 ]

eight 发表于 2008-3-27 15:47

后面的 for 循环应该可以再优化,不过如果速度已经可以接受,那不作也罢

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

zhailiangjun 发表于 2008-3-27 19:30

回复 5楼 的帖子

嗯,速度已经可以了,几分钟就搞定了。谢谢你的提示
页: [1]
查看完整版本: 请教这个程序怎么简化