如何在相同维度的另一个矩阵取值为1后删除矩阵中的整行

Nir*_*man 1 matlab matrix

假设我有两个矩阵:

A= [0 0 0 0 1;                     
    0 0 0 1 0;
    1 0 1 0 1;
    0 0 0 0 0;
    0 0 1 1 1]

B = [20 15 25 30 40;
     12 15 25 38 24;
     50 23 37 21 19;
      7 20 89 31 41;
     12 13 45 21 31]
Run Code Online (Sandbox Code Playgroud)

如何在第一次出现A中的B nan行中的所有条目出现在A.在这种情况下,我希望输出为:

B = [20 15 25 30 Nan;
     12 15 25 Nan Nan;
     Nan Nan Nan Nan Nan;
     7 20 89 31 41;
     12 13 Nan Nan Nan]
Run Code Online (Sandbox Code Playgroud)

先感谢您

rah*_*ma1 6

您可以使用cummaxcumsum逻辑索引将值设置为NaN:

B(logical(cumsum(A,2)))=NaN;
Run Code Online (Sandbox Code Playgroud)

要么

B(logical(cummax(A,2)))=NaN;
Run Code Online (Sandbox Code Playgroud)