1

我有一个 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.

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

谢谢,任何帮助表示赞赏!

4

1 回答 1

0

而是尝试ismember(A(:, 1:numel(B)), B, 'rows')获取一个逻辑向量,该向量仅索引您想要的行

现在

A(C,:)提取行

您收到尺寸不匹配错误的原因是因为您的 A(:,1:9) 有很多行,但 B 只有一个,并且 Matlab 不会像 Octave 或 Python 那样自动广播。您可以使用repmator来执行此操作,bsxfun但在这种情况下,您可以ismember选择正确的功能。

于 2013-07-31T13:49:56.903 回答