1

私はmatlabに特定の配列をロードしましたが、手段などを取りたいのですが、私の問題は、変数である「M」 (私が添付したコードにあります)がchar配列としてではなくとして扱われることです(実際にそうです)。Mの代わりに配列であるMを使用する方法はchar

kk=[];
files = dir('*.dat');
for i=1:length(files)
    eval(['load ' files(i).name])
    M=files(i).name;
    load(M)
    p=mean(M,2);
    kk=[kk p];
end
mn= mean(kk,2);
4

2 に答える 2

2

いくつかのコメント:

  1. ファイル名を割り当てる代わりにload、変数に入れることができますMM

    >> M = load( files(ii).name ); % load the file into a matrix M
    
  2. meanすべてのファイルに保存されているすべての数値を計算したい場合mean( [mean(M1,2) mean(M2,2) ...] )は、必ずしも必要なmeanものではありません。
    異なるマトリックスに異なる数の列がある場合、目的の数量を計算していません。探している正しい量を計算していることを確認してください

  3. 使用しないでくださいeval: 不要です。コードが読みにくくなり、保守やデバッグが難しくなります。

  4. ループ内で配列を拡張しないでください: kk = [kk p];. この種の動作は、反復ごとに再割り当てする必要があるため、Matlab のパフォーマンスを低下させます。kkループの前に必要なメモリを事前に割り当てkkます。大幅なスピードアップが見られます。

  5. Matlab では、変数名として使用しないことをiお勧めします。

于 2013-06-24T06:54:29.343 に答える
0

importdataファイル名のテキスト処理で関数を使用しないのはなぜですか。

M=importdata(['/path/to/file/' num2str(j) '.dat'])

また

M=load(['/path/to/file/' num2str(j) '.dat'])

また、dlmreadあなたのケースで試すことができます。loadMATファイルの方が適切だと思います。さまざまな方法の比較を次に示します。

http://www.mathworks.nl/help/matlab/import_export/ways-to-import-text-files.html

于 2013-06-24T09:01:57.477 に答える