Matlab 删除整行并合并矩阵中的下一行
我有一个矩阵a=Matlab 删除整行并合并矩阵中的下一行,matlab,matrix,delete-row,cell-array,Matlab,Matrix,Delete Row,Cell Array,我有一个矩阵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列
'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”或第3列中的任何“@NA”之外还有其他内容,我如何获得一个新的矩阵B来删除矩阵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单元矩阵
欢迎任何建议 在您的示例中,您没有说明“合并下一个限定行”的含义。您所要做的就是选择在某个条件下失败的行,然后删除它们。如果这就是你真正想要做的,那么像这样的事情就可以了:
validnums = arrayfun( @num2str, 10:5:55, 'uni', 0 );
column1valid = ismember( A(:,1), validnums );
column3valid = cellfun( @isnumeric, A(:,3) )
B = A( column1valid & column3valid, : );
在您的示例中,您没有说明“合并下一个限定行”的含义。您所要做的就是选择在某个条件下失败的行,然后删除它们。如果这就是你真正想要做的,那么像这样的事情就可以了:
validnums = arrayfun( @num2str, 10:5:55, 'uni', 0 );
column1valid = ismember( A(:,1), validnums );
column3valid = cellfun( @isnumeric, A(:,3) )
B = A( column1valid & column3valid, : );
对的回答有一点不同:
idx = ismember(A(:,1), num2str((10:5:55)')) & ~strcmp(A(:,3),'@NA');
B = A(idx,:);
对的回答有一点不同:
idx = ismember(A(:,1), num2str((10:5:55)')) & ~strcmp(A(:,3),'@NA');
B = A(idx,:);
逻辑索引是如此强大!逻辑索引是如此强大!