MATLAB中inputdlg函数用法
目录
语法
说明
示例
用于收集用户输入的对话框
具有不同宽度的文本编辑字段
使用 TeX 解释器解释 prompt 值
将输入转换为数值
inputdlg函数的功能是创建收集用户输入的对话框。
语法
answer = inputdlg(prompt)
answer = inputdlg(prompt,dlgtitle)
answer = inputdlg(prompt,dlgtitle,dims)
answer = inputdlg(prompt,dlgtitle,dims,definput)
answer = inputdlg(prompt,dlgtitle,dims,definput,opts)
说明
answer = inputdlg(prompt) 创建包含一个或多个文本编辑字段的模态对话框,并返回用户输入的值。返回值是字符向量元胞数组的元素。元胞数组的第一个元素对应于对话框顶部编辑字段中的响应。第二个元素对应于下一个编辑字段中的响应,依此类推。
answer = inputdlg(prompt,dlgtitle) 指定对话框的标题。
当 dims 是标量值时,answer = inputdlg(prompt,dlgtitle,dims) 指定每个编辑字段的高度。当 dims 是数组时,每个数组元素中的第一个值设置编辑字段的高度。每个数组元素中的第二个值设置编辑字段的宽度。
answer = inputdlg(prompt,dlgtitle,dims,definput) 指定每个编辑字段的默认值。definput 输入参数包含的元素数量必须与 prompt 相同。
answer = inputdlg(prompt,dlgtitle,dims,definput,opts) 指定当 opts 设置为 'on' 时,对话框可在水平方向调整大小。当 opts 是结构体时,它指定对话框是否可在水平方向调整大小、是否为模态,以及是否解释 prompt 文本。
示例
用于收集用户输入的对话框
创建一个对话框,其中包含两个文本编辑字段,用于收集用户输入的整数和颜色图名称。
prompt = {'Enter matrix size:','Enter colormap name:'};
dlgtitle = 'Input';
dims = [1 35];
definput = {'20','hsv'};
answer = inputdlg(prompt,dlgtitle,dims,definput)
如图所示:
具有不同宽度的文本编辑字段
创建一个标题为 Customer 的输入对话框,其中包含三个不同宽度的编辑字段。
x = inputdlg({'Name','Telephone','Account'},...
'Customer', [1 50; 1 12; 1 7]);
如图所示:
使用 TeX 解释器解释 prompt
值
创建一个对话框,该对话框使用 options 结构体以 TeX 标记形式呈现提示。
通过指定以下内容来定义对话框选项:
-
包含 \theta 字符序列的提示
-
对话框标题
-
默认输入值为 30
-
编辑字段高度等于 1 个文本行,宽度等于 40 个字符单元
-
TeX 作为解释器
然后,通过指定这些选项来创建输入对话框。
prompt = {'Enter a value of \theta (in degrees)'};
dlgtitle = 'Theta Value';
dims = [1 40];
definput = {'30'};
opts.Interpreter = 'tex';
answer = inputdlg(prompt,dlgtitle,dims,definput,opts);
如图所示:
将输入转换为数值
用户可在 inputdlg 文本编辑字段中输入标量或向量值。MATLAB® 将以字符向量元胞数组的形式存储这些输入。可以使用 str2num 将输入元胞数组的成员转换为数字。
创建一个要求用户输入数值数据的输入对话框。
answer = inputdlg('Enter space-separated numbers:',...
'Sample', [1 50])
如图所示:
假设用户输入 1 2 3 4 -5 6+7,然后点击确定。MATLAB 将以字符向量元胞数组的形式存储答案 - {'1 2 3 4 -5 6+7'}
使用 str2num 将该元胞数组转换为数字。
user_val = str2num(answer{1})
user_val =
1 2 3 4 -5 13
提示
-
即使模态输入对话框处于活动状态,MATLAB 程序也会继续执行。要阻止程序执行直到用户做出响应,可以使用 uiwait 函数。
用户可在输入对话框中输入标量或向量值。使用 str2num 将以空格和逗号分隔的值转换为行向量,将以分号分隔的值转换为列向量。例如,如果 answer{1} 包含 '1 2 3;4 -5 6+7i',则转换将生成: