我已经在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);
答案 0 :(得分:2)
几条评论:
您可以load
加载变量M
,而不是将文件名分配给M
>> M = load( files(ii).name ); % load the file into a matrix M
如果您想计算存储在所有文件中的所有数字的mean
,那么mean( [mean(M1,2) mean(M2,2) ...] )
不一定是您想要的mean
。
如果不同矩阵中的列数不同,则表示您没有计算所需的量。 确保您正在计算正确的数量。
不要使用eval
:这是不必要的,使代码难以阅读,难以维护和调试。
不要在循环内生成数组:kk = [kk p];
。这种行为会杀死 Matlab的性能,因为它需要在每次迭代时重新分配kk
。在循环之前预先分配kk
所需的内存 - 您将看到显着的加速。
答案 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