上千万条数据判断大于零和小于零并分别进行运算,第一想到if语句,但是运行过程太太太费劲了,matlab直接狗带。
for i = 1:length(a(:,1))
if a(i,1)>=0
b(i,1) = a(i,2)*10;
else
b(i,1) = a(i,2)*0.1;
end
end
然后重新构思,找到符合条件的数据所在位置,然后再把那个位置的数值运算就好了嘛,用find函数!
so
[row1,col1] = find(a(:,1)>=0);
[row2,col2] = find(a(:,1)<0);
for i = row1
b(i,1) = a(i,2)*10;
end
for j = row2
b(j,1) = a(i,2)*0.1;
end
去掉繁琐的判别语句,效率翻翻翻倍。
我永远记得之前看到的matlab去用C擅长的if和for性价比超低。
P.S.如果大噶有更效率的方法,欢迎评论指点。