以下のコードを簡単にしたいと思います。関数内の配列のアドレス指定
files=dir('~/some*.txt');
numFiles=length(files);
for i = 1:numFiles
name=files(i).name;
name=strsplit(name,'.');
name=name{1};
name=strsplit(name, '_');
name=name(2);
name = str2num(name{1});
disp(name);
end
私は、一般的には、私のようなものが大好きだ、MATLABでbegginer午前:
name = str2num(strsplit(strsplit(files(i).name,'.')(1),'_')(2));
をしかし、MATLABはこれが好きではありません。
上記のアプローチのもう一つの問題は、matlabはname(2)のようなものであってもセルタイプを与え続けますが、これは私の構文の問題かもしれません。
例ファイル名:
3000_0_100ms.txt
3000_0_5s.txt
3000_110_5s.txt
...
のは、私は「5S」で終わるすべてのファイルを選択したいとしましょうで、私は、'_'
で(拡張子を取り除いた後)、それらを分割し、第二の部分を返す必要があります上記の3つのファイル名の場合は、0, 0, 110
となります。 しかし、私は上記の複雑なコードなしで、この単純な操作をmatlabでどのように行うのが一般的なのか興味があります。
例のファイル名を提供し、あなたが望む結果を説明してください。 – excaza
@excaza問題を詳細に編集しました。 – leosenko
例のファイル名が意図した用途に象徴的である場合、正規表現の照合によって意図した結果が得られますか? )、{files(:)。name}、 'UniformOutput'、false( 'regexp(c、 '\ _(?+?)\ _'、 'tokens'、 'once' ) '? – TroyHaskin