分配多个文件来设置变量名称的方法?
问题描述:
有没有一种方法来分配文件名来设置使用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(外观也here和here)使用定义的变量名这样的字符串:
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
它更容易,更好地只使用一个普通的数组,给定变量名称不变或应用程序依赖,在我的例子中,我已经有datablue
和datared
。
,如果你想用户定义的变量名的另一种选择是使用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将值设置为变量名称。