Extend / replicate a value by column when found in array

10 次查看(过去 30 天)
Say I have a matrix 5x5 with binary entries 0 and 1
A=[1 1 1 1 1;1 0 1 1 1;1 0 1 0 0;0 1 1 0 1;1 1 1 0 0]
I'd like to have as a result, a matrix where when the array is parsed by column, if 0 is found, then all rows indexed after are 0:
B=[1 1 1 1 1;1 0 1 1 1;1 0 1 0 0;0 0 1 0 0;0 0 1 0 0]
Any clue for a fast computing solution ? FYI every column is independent.
  2 个评论
cedric W
cedric W 2018-9-6
That's why I tried to give an example: A is the input matrix, B is the output. Say columns are #of simulations, rows are days. If on a column,on one day the value is 0, then for all the next days it will remain at 0. And you loop for the number so simulations you have. Simulations (columns therefore) are independent. Hope this is clearer.

请先登录,再进行评论。

采纳的回答

Guillaume
Guillaume 2018-9-6
编辑:Guillaume 2018-9-6
This is trivially achieved with cumprod since as soon as a 0 is encountered in a column the cumulative product is 0 from then on:
A = [1 1 1 1 1;1 0 1 1 1;1 0 1 0 0;0 1 1 0 1;1 1 1 0 0]
B = cumprod(A)

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Multidimensional Arrays 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by