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

时间:2012-08-14 19:34:26

标签: file matlab user-interface variables

有没有办法使用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语句等...

2 个答案:

答案 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(也请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);

尝试其中一些,只有在你有充分理由的情况下,才能使用eval