需要帮助澄清matlab的输入对话框

时间:2012-12-28 16:23:30

标签: matlab

假设我有以下代码:

%%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

1 个答案:

答案 0 :(得分:0)

不需要拨打getfield,坦白说没有任何意义。变量answercell数组,而不是struct,因此您不需要使用getfield粘贴代码的后半部分可以替换为:

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

关于循环,直到获得有效输入。您可以使用boolean标记,while,循环和function(让我们称之为areInputsValid()),如果输入有效,则返回true

validInput = false;

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

  % get the two entered values
  &  code here

  validInput = areInputsValid(A, B);
end