0

次のコードがあるとします。

%%input dialog box%%%
prompt = {'Enter gain:','Enter range:'};
dlg_title = 'Enter values';
num_lines= 1;
def     = {'20','256'};       %default
answer  = inputdlg(prompt,dlg_title,num_lines,def);

%%%to get the two entered values%%%%
A = getfield(answer,{1});    %first input field
A = str2double(A);
B = getfield(answer,{2});   %second input field
B = str2double(B);

「」の代わりに構造を持つ「動的フィールド名」を使用するとはどういう意味getfieldですか?

ユーザーに別の互換性のある入力を要求するという意味で、複雑でゼロより小さい入力値に対してループを使用するにはどうすればよいですか?

次のループを試しましたが、うまくいきません。なんで?

while isnan(A) || ~isreal(A) || A<0
    prompt = {'Enter gain:'%'Enter range:'};
    dlg_title = {'undefine!!'};
    num_lines= 1;
    def     = {'',''}%{'20','256'};       %default
    answer  = inputdlg(prompt, dlg_title, num_lines, def);
    A = getfield(answer,{1});    %first input field
    A = str2double(A);
    %A = str2double(input('Enter the value of module(mm) : ', 's'));
end
4

1 に答える 1

0

への呼び出しgetfieldは必須ではなく、率直に言って意味がありません。変数answerは acellではなく配列なstructので、使用する必要はありませんgetfield 。貼り付けたコードの後半は、次のように置き換えることができます。

A = str2double( answer{1} );
B = str2dobule( answer{2} );

有効な入力が得られるまでのループに関して。入力が有効な場合に true を返すbooleanフラグ、whileループ、およびfunction(呼び出します) を使用できます。areInputsValid()

validInput = false;

while (~validInput)
  % input dialog box
  %  code here

  % get the two entered values
  &  code here

  validInput = areInputsValid(A, B);
end
于 2012-12-28T17:12:48.043 に答える