有没有办法使用GUI分配文件名来设置varible?假设我有6个文件集,每个文件集包含4种颜色(蓝色,绿色,nir,红色)。总共有24个文件,所以我需要24个变量。我希望set varialbes类似于
blue1
green1
nir1
red1
blue2
green2
nir2
red2
etc...
目前我正在尝试使用GUIDE创建一个自定义GUI,允许用户选择他们希望的文件并将它们分配给某些变量。我正在考虑将24个popupmenus附加到文件目录并允许用户选择他们想要的文件,然后它将分配该文件及其路径到变量(例如blue1)我也想要24个复选框与if语句关联
假设popupmenu1与变量blue1和checkbox1
相关联 if checkbox1 == checked
do import
elseif checkbox1 == unchecked
fill with zeros
我已经创建了GUI的基本框架,我只是不清楚如何应用文件选择然后关联if语句等...
答案 0 :(得分: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将值设置为变量名。
答案 1 :(得分:0)
如果您事先知道变量文件,那么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);
尝试其中一些,只有在你有充分理由的情况下,才能使用eval
!