0

GUI を使用して変数を設定するためにファイル名を割り当てる方法はありますか? それぞれ 4 色 (青、緑、近赤外、赤) を含む 6 つのファイル セットがあるとします。全部で 24 個のファイルがあるので、24 個の変数が必要です。そして、セットの変数を次のようにしたい

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

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ください!

于 2012-08-15T08:40:45.633 に答える