【发布时间】:2018-03-15 16:38:59
【问题描述】:
有什么方法可以避免在 Matlab 中使用下面的 for 循环? 'M' 和 'B' 是 100 x 100 对称矩阵,它的元素是已知的。
p1=rand(100,100).*25;
M=p1+p1';
p2=rand(100,100).*25;
B=p2+p2';
dr=0.2;
R=2 *dr;
for o=1:50
center= R*o;
MX= abs(M-center)<dr;
mm=MX.*B;
countB = [countm,sum(mm(:))/sum(mm(:)~=0)];
count = [count,sum(MX(:))];
end
*这个for循环在另一个循环中重复,避免使用它的目的是使代码更快。
【问题讨论】:
-
count需要是什么?您能否为M和B添加一个小样本以便我们运行它? -
是的,我做到了。 @10a
-
countm和count在您在循环中分配它们之前都不存在,因此此代码将出错。另外:DON'T 增加数组,相反,只需预先分配它们,你所有的麻烦可能都会消失,因为这很可能是让这段代码变慢的原因。自 R2016b 以来,循环不再像以前那样糟糕,TMW 的最新发展使其几乎可以与矢量化相媲美。 -
感谢您的评论 +1 @Adriaan
标签: matlab for-loop optimization