【发布时间】:2016-11-15 11:47:43
【问题描述】:
我有两个行数相等的列矩阵:
其中一个列矩阵(我们称之为T)是一组按升序排序的唯一整数的非周期性集合。 T 可以通过以下方式模拟:
T=sort(randperm(10E6,100)) ;
T=T';
另一列矩阵(我们称其为C)为0或1,表示后续操作中T中对应行的状态。 0 比 1 更不可能发生。C 可以通过以下方式模拟:
C=ones(100,1);
C(randperm(100,10))=0;
实际上,这些列矩阵将包含数百万个元素,并且此处的示例有意缩短以提高测试速度。
我们遍历C 的每一行。如果C 中的一个元素的值为0,那么T 中的相应行值将从每个T 行中的所有后续值中减去,直到我们在C 中达到另一个0。
我现在正在尝试对以下操作进行矢量化,以提高对数百万个元素矩阵进行操作时的速度。
lastReset = 0;
newT = NaN*zeros(length(T),1);
for index = 1:length(C)
if C(index) == 0
lastReset = T(index);
else
newT(index) = T(index) - lastReset;
end
end
newT(C==0)=[];
如何矢量化上述for 循环?
【问题讨论】:
-
你有什么问题?
-
亲爱的 saygins,很抱歉我没有提出问题。现在我已经编辑了指定我的请求的帖子。谢谢。
标签: matlab signal-processing vectorization