3

matlab に関するこの質問: ループを実行しており、反復ごとに新しいデータ セットが生成され、毎回新しいファイルに保存したいと考えています。また、名前を変更して古いファイルを上書きします。次のようになります。

name_each_iter = strrep(some_source,'.string.mat','string_new.(j).mat')

ここで苦労しているのは、ファイルを取得するための反復です: ...string_new.1.mat ...string_new.2.mat など。

() [] {} と 'string_new.'j'.mat' (構文エラーが発生しました) のさまざまな組み合わせを試していました。

どうすればそれができますか?

4

4 に答える 4

5

NUM2STR を使用して、事前にすべてのファイル名を生成することもできます。

>> filenames = cellstr(num2str((1:10)','string_new.%02d.mat'))

filenames = 
    'string_new.01.mat'
    'string_new.02.mat'
    'string_new.03.mat'
    'string_new.04.mat'
    'string_new.05.mat'
    'string_new.06.mat'
    'string_new.07.mat'
    'string_new.08.mat'
    'string_new.09.mat'
    'string_new.10.mat'

filenames{i}各反復と同様に、セル配列の内容にアクセスします

于 2012-07-26T16:37:20.483 に答える
3

sprintfはこれに非常に便利です:

for ii=5:12
    filename = sprintf('data_%02d.mat',ii)
end

これにより、次の文字列が に割り当てられますfilename

    data_05.mat
    data_06.mat
    data_07.mat
    data_08.mat
    data_09.mat
    data_10.mat
    data_11.mat
    data_12.mat

ゼロパディングに注意してください。パラメータ化されたフォーマットされた文字列が必要な場合は、一般に sprintf が便利です。

于 2012-07-26T16:34:08.293 に答える