需要帮助澄清matlab的输入对话框吗
假设我有以下代码:需要帮助澄清matlab的输入对话框吗,matlab,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 = ge
%%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
isnan(A)| | ~isreal(A)| | A对getfield
的调用是不需要的,坦率地说没有任何意义。变量answer
是一个cell
数组,而不是struct
,因此不需要使用getfield
粘贴的代码的后半部分可以替换为:
A = str2double( answer{1} );
B = str2dobule( answer{2} );
关于循环,直到你得到有效的输入。您可以使用布尔
标志、while
、循环和函数
(我们将其称为areInputsValid()
),如果输入有效,该函数将返回true
validInput = false;
while (~validInput)
% input dialog box
% code here
% get the two entered values
& code here
validInput = areInputsValid(A, B);
end
我对循环不是很清楚,你能提供一个更具体的例子吗?非常感谢@slayton