Matlab具有强大的计算功能,同时又具有人性化、可视化的操作界面GUI,可通过输入数据,对身高、体重的BMI进行计算,生成GUI界面并输出结果,该GUI界面未由guide函数实现,而是由inputdlg函数实现。
先看效果:
代码如下:
function BMI_callback()
%%通过窗口写入数据
prompt={'姓名','年龄','身高','体重'};
dlgtitle='BMI计算';
dims=1;
definput={'张三','XX','XXX','XX'};
opts='on';
answer=inputdlg(prompt,dlgtitle,dims,definput,opts);
%%导出数据给计算窗口
data=char(answer);
age=str2double(data(2,1:2));
height=str2double(data(3,1:3));
weight=str2double(data(4,1:2));
%%BMI计算及输出
consequence=BMI(height,weight);
vars = {'姓名','年龄','身高','体重','BMI'};
t0=char(answer(1,:));
con=num2cell(consequence);
t=[answer' con];
uit=uitable(t,vars,'Position',[100 200 315 60]);
end
function BMI=BMI(height,weight)
height=height/100;
BMI=weight/(height^2);
end
本文是通过两个function函数实现的BMI计算功能,但为了后续其他功能的添加,分为了两个函数来传递数据。
Tips:
1、该answer的值为cell,后面在传递数组时,需要进行类型转换;
answer=inputdlg(prompt,dlgtitle,dims,definput,opts);
转换:
data=char(answer);
age=str2double(data(2,1:2));
height=str2double(data(3,1:3));
weight=str2double(data(4,1:2));
2、最终为了显示结果,将结果放在uitable中,结果t的类型为cell;
con=num2cell(consequence);
t=[answer' con];
3、BMI在计算时,matlab默认保留小数点后4位,可以用round函数,对小数点位数进行修改,这里不再赘述。BMI核心计算公式为:体重/身高^2;
4、关于inputdlg(创建收集用户输入的对话框)函数,可以通过help了解详细用法,其中opts为
对话框设置,主要对个性化进行设置,指定为 'on'
或结构体。当 opts
设置为 'on'
时,用户可在水平方向调整对话框大小。当 opts
是结构体时,结构体字段指定下表中的选项。
字段 | 值 |
Resize | 'off'(默认值)或'on'。如果设置为'off',则不能调整对话框大小。如果设置为'on',则用户可以水平调整窗口大小 |
WindowStyle | 'modal'(默认值)或'normal'。如果设置为'modal',则用户必须先做出响应,然后才能与其他窗口交互 |
Interpreter | 'none'(默认值)或'tex'。如果设置为'tex',则可以使用Tex呈现显示。对话框标题不受影响。 使用Tex标记可添加上标和下标、修改字体类型和颜色,以及在prompt文本包含特殊字符 |