排序矩阵,其中列指定下一个元素需要满足的条件



假设我有一个包含元素的长表

% table with distinct elements for A1. A2 is sometimes an integer and
% sometimes -1000 
T   A1    A2 
0   182 181
1   182 180
2   181 180
3   45  -1000
4   29  -1000

另外,我有一个数组,它指定了-1000(在A2中(需要出现的不同顺序。

% array specifies whether A2 should have -1000 
[True False True False False] 

所以对于上面的例子,期望的输出是:

T   A1    A2 
0   45  -1000   % array is true and first time -1000 appears 
1   182 181  % array above is false 
2   29  -1000 % second time -1000 appears 
3   182 180
4   181 180

有什么有效的方法吗?我们将非常感谢您的帮助!

这将是一种方法:

  1. 获取A2 == -1000所在行的索引,我们将其称为neg(表示负数(
  2. 获取表的副本(tblOld(,因为我们将在两个步骤中覆盖原始表,并且需要在第二步中引用它
    • neg行覆盖索引数组中的true
    • 其他行覆盖索引数组中的false
idx =  [true false true false false];
neg = (tbl.A2 == -1000);
tblOld = tbl;
tbl( idx, 2:3 ) = tblOld( neg, 2:3 );
tbl( ~idx, 2:3 ) = tblOld( ~neg, 2:3 );

输出:

tbl =
5×3 table
T    A1      A2  
_    ___    _____
0     45    -1000
1    182      181
2     29    -1000
3    182      180
4    181      180

相关内容

  • 没有找到相关文章

最新更新