0

我有一个矩阵 A =

'30'  'X' '@NA'
'15'  'Y' [231.001] 
'00'  'Y' [21.110]
'20'  'W' '@NA'
'55'  'X' [9.001]
'10'  'X' [11.211]


>>whos A
  Name        Size              Bytes  Class    Attributes

  aaa         6x3               226    cell     

如果第 1 列中除 '10'、'15'、'20'...'55' 或任何 '@NA'第 3 列,然后 MERGE 下一个符合条件的行。

以A为例,第1行和第4行应该删除,因为第3列有'@NA'。第3行也应该删除,因为第1列有'00'。

矩阵 B 应该喜欢,

>>B

B = 
    '15'  'Y' [231.001] 
    '55'  'X' [9.001]
    '10'  'X' [11.211]

B 是一个 3*3 的单元矩阵。

欢迎任何建议!

4

2 回答 2

2

@paddy的回答略有不同:

idx = ismember(A(:,1), num2str((10:5:55)')) & ~strcmp(A(:,3),'@NA');
B = A(idx,:);
于 2012-08-08T01:45:39.380 回答
1

在您的示例中,您并没有说出“合并下一个合格行”的意思。您所做的只是选择在一个或另一个条件上失败的行,然后删除它们。如果这实际上是您想要做的所有事情,那么这样的事情就可以了:

validnums = arrayfun( @num2str, 10:5:55, 'uni', 0 );
column1valid = ismember( A(:,1), validnums );
column3valid = cellfun( @isnumeric, A(:,3) )
B = A( column1valid & column3valid, : );
于 2012-08-08T00:30:55.993 回答