我使用的是大约50 Gb的数据集,所以我决定在每次计算完成后,通过"分段"调用和消除每个数据集来工作。我有8个不同的.mat文件,每个文件都包含一个单元格{1,5},每个单元格包含一个(1,50(数组,最后是一个(10241024(的2d数组。我的问题是,我能以某种方式更改计算循环中包含此数据的数组的名称吗?代码如下。
ld = [5,10,15,20,25,50,75,100];
for i=1:8
load(sprintf('U%i.mat',ld(i)));
for a = 1:1024
for b = 1:1024
for c = 1:50
stad_pmmh(c) = 'U_%i{c}(a,b); %%%%Here is the main issue and where i need a "dynamical naming"
end
STAD_pmmh{a,b} = stad_pmmh;
dev_pmmh(a,b) = std(STAD_pmmh{a,b});
end
end
save(sprintf('dev_%i',ld(i)),'dev_pmmh');
%
clear (sprintf('U_%i',ld(i)));
end
您可以将.mat内容加载到一个结构中,在加载数据时要求输出参数。然后使用动态字段命名来访问数据。
要将.mat文件中的数据加载到结构中,请使用
data = load('filename');
.mat中的每个变量都将成为Structure中的一个字段。在您的情况下,
data = load('U5');
data.U5
然后您可以通过动态命名访问结构字段:
my_field = 'U5';
data.(my_field)
在您的情况下:
file_name = sprintf('U%i',ld(i))
data = load(file_name); % You don't need the .mat extension to load a .mat file
[...]
stad_pmmh(c) = data.(file_name){c}(a,b);
Matlab帮助中的参考:
加载:将变量从文件加载到工作区
从变量生成字段名