matlab-需要加载其文件名存储在变量中的文件

时间:2013-06-24 06:49:49

标签: matlab

我已经在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);

2 个答案:

答案 0 :(得分: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];。这种行为会杀死 Matlab的性能,因为它需要在每次迭代时重新分配kk。在循环之前预先分配kk所需的内存 - 您将看到显着的加速。

  5. 在Matlab中,it is best not to use i as a variable name

答案 1 :(得分: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