分配多个文件来设置变量名称的方法?

问题描述:

有没有一种方法来分配文件名来设置使用GUI的变量?假设我有6个文件集,每个文件集包含4种颜色(蓝色,绿色,黑色,红色)。共有24个文件,所以我需要24个变量。我想设定varialbes是像分配多个文件来设置变量名称的方法?

blue1 
green1 
nir1 
red1 

blue2 
green2 
nir2 
red2 

etc... 

目前我正在试图使用指南创造一个自定义的图形用户界面,允许用户选择他们想要的文件,并让它们分配给某些变量。我正在考虑沿着24个popupmenus附加到文件目录并允许用户选择他们想要的文件,然后它将分配该文件和它的路径到一个变量(例如blue1),我也想24个复选框,与if语句

比方说popupmenu1与可变蓝天航空公司和checkbox1

if checkbox1 == checked

do import

elseif checkbox1 == unchecked

相关关联

fill with zeros

我已经创建了图形用户界面的基本框架,我就如何应用文件中进行选择,然后关联的if语句,等等

如果你提前知道该变量的文件,这是bad practice(外观也herehere)使用定义的变量名这样的字符串:

var1name = 'blue'; 
var2name = 'red'; 
% etc. 

% load data 
datablue=rand(4,1); 
datared =rand(4,1); 

% assign 
eval([var1name '1 = datablue(1);']); 
eval([var2name '1 = datared (1);']); 
% etc. 
eval([var1name '2 = datablue(2);']); 
eval([var2name '1 = datared (2);']); 
% etc 

它更容易,更好地只使用一个普通的数组,给定变量名称不变或应用程序依赖,在我的例子中,我已经有databluedatared

,如果你想用户定义的变量名的另一种选择是使用array of structs

var1name = 'blue'; 
var2name = 'red'; 
sample(1).(var1name) = datablue(1); 
sample(1).(var2name) = datared (1); 
% ... 
sample(2).(var1name) = datablue(2); 
sample(2).(var2name) = datared (2); 

尝试下列出来,只有当你有一个很好的理由,诉诸0​​!

for k = 1:6 
blue(k) = sprintf('blue%d', k); 
green(k) = sprintf('green%d', k); 
nir(k) = sprintf('nir%d', k); 
red(k) = sprintf('red%d', k); 
end 

这将创建只是不清楚你的变量名称。然后,您可以使用assignin(我相信)或eval将值设置为变量名称。