1

基本的にファイル名のリストを含むchar配列Aがあります(各行に1ファイル)(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 には 1 つしかなく、Matlab は Octave や Python のように自動的にブロードキャストしないためです。repmatまたは のいずれかを使用して実行できますbsxfunが、この場合ismemberは を選択するのが正しい関数です。

于 2013-07-31T13:49:56.903 に答える