请教这个程序怎么简化
k=0for 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)比较大,所以运算起来十分的耗时间,不知道有没有什么办法可以优化一下,谢谢了 用矢量化的思想,自己在置顶帖中找找相关例子,然后摸索一下,估计用 .* 和 find 等可以实现
[ 本帖最后由 ChaChing 于 2010-4-25 16:18 编辑 ]
回复 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 编辑 ] 后面的 for 循环应该可以再优化,不过如果速度已经可以接受,那不作也罢
[ 本帖最后由 ChaChing 于 2010-4-25 16:21 编辑 ]
回复 5楼 的帖子
嗯,速度已经可以了,几分钟就搞定了。谢谢你的提示
页:
[1]