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