小编bis*_*ssi的帖子

带if语句的矢量化FIND函数MATLAB

我有一个矩阵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始终为非零(我通过在行末人工添加一行来强制执行此操作)。

然后bootprime某个矩阵对应的项number除以对应的项u(根据构造,该值不为零)。

matlab for-loop

1
推荐指数
1
解决办法
86
查看次数

标签 统计

for-loop ×1

matlab ×1