0

有没有办法使用 GUI 分配文件名来设置变量?假设我有 6 个文件集,每个文件集包含 4 种颜色(蓝色、绿色、nir、红色)。总共有 24 个文件,所以我需要 24 个变量。我希望 set varialbes 类似于

blue1
green1
nir1
red1

blue2
green2
nir2
red2

etc...

目前我正在尝试使用 GUIDE 创建一个自定义 GUI,允许用户选择他们想要的文件并将它们分配给某些变量。我正在考虑将 24 个弹出菜单附加到文件目录并允许用户选择他们想要的文件,然后它将分配该文件及其变量的路径(例如 blue1)我也想要与 if 语句关联的 24 个复选框

假设 popupmenu1 与变量 blue1 和 checkbox1 相关联

if checkbox1 == checked

do import

elseif checkbox1 == unchecked

fill with zeros

我已经创建了 GUI 的基本框架,我只是不清楚如何应用文件选择然后关联 if 语句等......

4

2 回答 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 将值设置为变量名。

于 2012-08-14T19:48:41.467 回答
0

如果您事先知道变量文件,那么使用字符串定义的变量名称是不好的做法(也请查看此处此处),如下所示:

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

考虑到变量名没有改变或应用程序依赖,只使用普通数组会更容易更好,在我的示例中我已经有了 asdatabluedatared.

如果您想要用户定义的变量名称,另一种选择是使用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

于 2012-08-15T08:40:45.633 回答