Extend / replicate a value by column when found in array

조회 수: 7 (최근 30일)
cedric W
cedric W 2018년 9월 6일
편집: Guillaume 2018년 9월 6일
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
KALYAN ACHARJYA
KALYAN ACHARJYA 2018년 9월 6일
편집: KALYAN ACHARJYA 2018년 9월 6일
@cedric The question is not clear for me
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)
  댓글 수: 1
cedric W
cedric W 2018년 9월 6일
Nice indeed. I was thinking about using cumsum but could find the solution. Thank you !

댓글을 달려면 로그인하십시오.

추가 답변 (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