在matlab中进行数据导入和计算



我使用的是大约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帮助中的参考:

加载:将变量从文件加载到工作区

从变量生成字段名

相关内容

  • 没有找到相关文章