我有一个矩阵u,我想遍历所有行和所有列,然后执行以下操作。如果元素不为零,则返回行索引的值。如果元素为零,则在该元素之后的下一个非零元素中查找行索引。我可以使用两个带有查找功能的for循环轻松地做到这一点。但是我需要做很多次(不是因为矩阵的大小,而是因为多次调用)。我怎样才能更快地完成?
这是for循环代码:
for w=scenario_size:-1:1
for t=1:time_size
l = u(t,w) ;
if l~=0
tprime = t ;
else
tprime = t+ find(u(t:end,w),1,'first') -1 ;
end
i(t,w) = tprime ;
boo(t,w) = number(tprime,w)/u(tprime,w) ;
end
end
Run Code Online (Sandbox Code Playgroud)
例如,如果一列为[0,0,5,1,0,3],i则为[3,3,3,4,6,6]。的任何列的最后一个元素u始终为非零(我通过在行末人工添加一行来强制执行此操作)。
然后boo是tprime某个矩阵对应的项number除以对应的项u(根据构造,该值不为零)。