如何从字符数组中选择与char字符串匹配的行并将它们保存在新数组中?

时间:2013-07-31 13:42:09

标签: matlab

我有一个char数组A,它基本上包含一个文件名列表(每行一个文件) (char,526x26)

val =

0815_5275_UBA_A_1971.txt  
0815_5275_UBA_A_1972.txt  
0823_6275_UBA_A_1971.txt  
0823_6275_UBA_A_1972.txt  
0823_6275_UBA_A_1973.txt
...

我还有一个变量

B = '0815_5275' 

我想选择以B开头的所有行(文件名)并将它们保存在新的数组C中。

这应该很简单,但不知怎的,我无法使其发挥作用。 我有这个:

C = A(A(:,1:9) == B);

但我收到错误消息:

Error using  == 
Matrix dimensions must agree.

我事先并不知道会匹配多少行,所以我无法预先定义一个空数组。

谢谢,感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

尝试ismember(A(:, 1:numel(B)), B, 'rows')而不是获取仅索引所需行的逻辑向量

现在

A(C,:)提取行

你得到尺寸不匹配错误的原因是因为你的A(:,1:9)有很多行,但B只有一行而且Matlab没有像Octave或Python那样自动广播。您可以使用repmatbsxfun执行此操作,但在这种情况下ismember是正确的选择函数。