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进入变量M而不是将文件名分配给M

    >> 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];. 这种行为会扼杀kkMatlab 的性能,因为它需要在每次迭代时重新分配。在循环之前预先分配所需的内存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你的情况。我认为load更适合 MAT 文件。以下是不同方式的比较:

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

于 2013-06-24T09:01:57.477 回答