Performance MatLAB-使用循环更有效地定义变量?

Performance MatLAB-使用循环更有效地定义变量?,performance,matlab,Performance,Matlab,我非常确定我的代码现在效率很低,我正在寻找通过使用循环定义变量来提高效率的指导 比如说 Y = imread('1Y.png') Z = imread('1Z.png') VariableAZAZ = cat(1,AZ,AZ) VariableAZBZ = cat(1,AZ,BZ) VariableAZCZ = cat(1,AZ,CZ) 另一方面 CombinedAZAZAZBZ = {VariableAZAZ, VariableAZBZ} 不使用某种循环非常乏味,但我对如何开始有点迷茫。

我非常确定我的代码现在效率很低,我正在寻找通过使用循环定义变量来提高效率的指导

比如说

Y = imread('1Y.png')
Z = imread('1Z.png')

VariableAZAZ = cat(1,AZ,AZ)
VariableAZBZ = cat(1,AZ,BZ)
VariableAZCZ = cat(1,AZ,CZ)
另一方面

CombinedAZAZAZBZ = {VariableAZAZ, VariableAZBZ}
不使用某种循环非常乏味,但我对如何开始有点迷茫。 从本质上说,我的问题是,是否有一种方法可以利用变量名表示变量中的值这一事实。
谢谢

我会尝试将内容加载到单元格数组中,而不是使用大量不同的变量名。可能是这样的:

my_images = cell(26,1);
for(i=1:26)  %iterate from 1A.png to 1Z.png
   filename = ['1', char('A'+i-1), '.png']
   my_images{i} = imread(filename);
end

combined_images = cell(26,26);
for(i=1:26)
  for(j=1:26)
    combined_images{i,j} = cat(1, my_images{i}, my_images{j});
  end
end
加载文件的替代方法
我建议您在此处使用:

映射从key->value创建一个1:1的映射,因此,如果您对键使用模式,那么编写代码来计算所需的键应该非常容易

现在,您甚至不需要存储变量的单元格数组,只要 阅读它们:

% don't do this!
my_map('AZAZAZBZ') = {my_map('AZAZ'), my_map('AZBZ')};

因为您可以使用键直接从
my\u map
中轻松阅读。

您有像这样的大量文件要加载吗?还是只是一对?
Y = imread('1Y.png')
Z = imread('1Z.png')

% ... load/compute AZ, BZ, CZ, ...

my_map = containers.Map();

% save into the map

my_map('AZAZ') = cat(1,AZ,AZ);
my_map('AZBZ') = cat(1,AZ,BZ);
my_map('AZCZ') = cat(1,AZ,CZ);
% ...

% retrieve the data from the map

data = my_map('AZAZ');
% don't do this!
my_map('AZAZAZBZ') = {my_map('AZAZ'), my_map('AZBZ')};