【问题标题】:matlab-need to load file whose filename is stored in a variablematlab-需要加载文件名存储在变量中的文件
【发布时间】:2013-06-24 06:49:49
【问题描述】:

我已经在 matlab 中加载了某些数组,我想采取手段和东西,但我的问题是 'M​​' 这是一个变量(它在我附加的代码中)是被视为char 而不是一个数组(它实际上是)。 charchar如何使用数组M代替M?

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);

【问题讨论】:

  • 你试过load(M(:))load(M(:)')吗?另外eval 行的意义是什么,还是您要摆脱的?
  • this question - 非常相似。

标签: matlab


【解决方案1】:

几个cmets:

  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

【讨论】:

    【解决方案2】:

    为什么不使用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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多