我有一个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.
我事先并不知道会匹配多少行,所以我无法预先定义一个空数组。
谢谢,感谢任何帮助!
答案 0 :(得分:0)
尝试ismember(A(:, 1:numel(B)), B, 'rows')
而不是获取仅索引所需行的逻辑向量
现在
A(C,:)
提取行
你得到尺寸不匹配错误的原因是因为你的A(:,1:9)有很多行,但B只有一行而且Matlab没有像Octave或Python那样自动广播。您可以使用repmat
或bsxfun
执行此操作,但在这种情况下ismember
是正确的选择函数。