11/02/2006

林書如:您的體重過重嗎

前言:
BMI指數可以反映出體重是否處於理想狀態。過去已有許多文獻指出BMI指數過高往往是造成糖尿病、高血壓,甚至是心血管疾病的危險因子。因此,適度地監控自己的BMI指數是否處於正常值內是很重要的。

問題:
試寫出一個函數,當輸入體重和身高的數值後,能計算出其身體質量指數BMI值。並且依據其BMI值判斷其是否有體重過重或過輕的問題。(18.5<=BMI<24時顯示"體重標準",BMI>24時顯示"體重過重",BMI<18.5時顯示"體重過輕")

指令:

一開始我寫了一個比較簡單敘述檔案(Script file)

function [A]=BMI(w,h)
% BMI(Body Mass Index) calculation
A=w/h^2; % A means BMI
if 18.5<=A & A<24
fprintf('BMI=%0.2f 體重標準\n',A)
elseif A<18.5
fprintf('BMI=%0.2f 體重過輕\n',A)
else
fprintf('BMI=%0.2f 體重過重\n',A)
end

模擬輸出結果:

>> BMI(60,1.5)
BMI=26.67 體重過重

ans =

26.6667

結果顯示,一位體重60公斤,身高150公分的人,其BMI指數為26.67,有體重過重的傾向

==============================================

但是,為了能夠加上交談的功能,讓使用者更能清楚地了解應該輸入的內容
例如,輸入之體重應以公斤為單位,輸入之身高應以公尺為單位
因此我又改寫成另一個函數檔(function file),如下

% BMI2.m
% BMI(Body Mass Index) calculation
a=input('Please keyin your body weight? (kg)');
if isnumeric(a)
b=input('Please keyin your body height? (m)');
B=a/b^2; % B means BMI
if 18.5<=B & B<24
fprintf('BMI=%0.2f 體重標準\n',B)
elseif B<18.5
fprintf('BMI=%0.2f 體重過輕\n',B)
else
fprintf('BMI=%0.2f 體重過重\n',B)
end
end

模擬輸出結果:

>> BMI2
Please keyin your body weight? (kg)60
Please keyin your body height? (m)1.5
BMI=26.67 體重過重

結果同上,一位體重60公斤,身高150公分的人,其BMI指數為26.67,有體重過重的傾向

討論:

我是以簡單的if-elseif指令來撰寫這兩個小程式
程式中如果還有可以補強的地方(例如發現程式的bias,或是其實還有更簡單的寫法),還麻煩大家提供意見 :p

4 則留言:

ShuRuLin 提到...

不好意思
第一個應該是函數檔(function file)
第二個才是敘述檔 (script file)

聖峰 提到...

嗯我有run過這個程式,但if isnumeric(a)
好像是多加上去的...我試過它好像可有可無~還是妳有特別用途呢?

ShuRuLin 提到...

本來是為了避免輸入文字的失誤
可是發現其實在input指令中已經自動設定只允許輸入數字
所以其實if isnumeric(a)的指令是可以省略的.....
所以程式應改為
% BMI2.m
% BMI(Body Mass Index) calculation
a=input('Please keyin your body weight? (kg)');
b=input('Please keyin your body height? (m)');
B=a/b^2; % B means BMI
if 18.5<=B & B<24
fprintf('BMI=%0.2f 體重標準\n',B)
elseif B<18.5
fprintf('BMI=%0.2f 體重過輕\n',B)
else
fprintf('BMI=%0.2f 體重過重\n',B)
end

謝謝同學的指教 :p

blog marketing 提到...

公兴上海搬场公司是经上海市工商,税务,交通部注册的一家专业性的上海搬家公司,诚实信誉,员工训练有素,经验丰富,工作细心,服务热情;为上海搬场,上海搬家的企业,家庭提供周到服务,如有需求,敬请垂询本搬场公司
强生上海搬场公司是经上海市工商,税务,交通部注册的一家专业性的上海搬家公司,诚实信誉,员工训练有素,经验丰富,工作细心,服务热情;为上海搬场,上海搬家的企业,家庭提供周到服务,如有需求,敬请垂询本搬场公司
北京搬家公司,诚实信誉,管理科学化,网络化;员工训练有素,经验丰富,工作细心,服务热情;搬家公司网点分布科学,司机稳重速度!愿为北京搬家的朋友提供优质的搬家服务。
北京彩虹搬家公司,是一家专业性北京搬家公司,企业诚信,员工搬运专业,是北京搬家公司行业的后起新秀,公司长期为搬家用户免费提供纸箱。欢迎重询!
北京搬家公司,诚实信誉,管理科学化,网络化;员工训练有素,经验丰富,工作细心,服务热情;搬家公司网点分布科学,司机稳重速度!愿为北京搬家的朋友提供优质的搬家服务。
北京佳佳乐月嫂服务中心,精心提供月嫂服务,育儿嫂服务,育婴师服务,本中心月嫂,育儿嫂,育婴师,均通过健康体验,经过严格培训,持证上岗。
北凝科技,废汽,余热回收,热力除氧改造,凝结水治理专家,其推出的,定连排烟囱余热回收器,乏汽回收低位热力除氧器,凝结水回收器,冷凝水,等系列产品。
北京华夏国际机票预定中心,全程各航机票,特价机票,特价国际机票,北京机票,北京特价机票,北京特价国际机票,留学生机票,折扣机票,打折的价格,增值的服务,精心哈护你的远航!
北京华夏国际机票预定中心,全程各航机票,特价机票,特价国际机票,北京机票,北京特价机票,北京特价国际机票,留学生机票,折扣机票,打折的价格,增值的服务,精心哈护你的远航!
承接北京空调移机北京空调加氟北京空调回收北京空调维修业务。空调维修技术雄厚,空调移机施工经验丰富细心,空调加氟空调回收价格合理。欢迎电话垂询!
北京绿源电动车新日电动车、爱玛电动车田村专卖店,为您提供绿源电动车、新日电动车、爱玛电动车、捷安特电动车品牌电动车、电池修复电动车电池修复,价格优惠,信誉保证!
北京海胜数码快印有限公司,致力于数码印刷,诚实信誉,实力雄厚,技术专业,设备先进,设计新颖,是北京数码印刷行业中新秀一支,愿做北京数码快印需求者的忠诚合作伙伴!欢迎广大企业事位来电来涵洽谈,荣幸之致!
北京金牌数码快印有限公司,致力于数码印刷,诚实信誉,实力雄厚,技术专业,设备先进,设计新颖,是北京数码印刷行业中新秀一支,愿做北京数码快印需求者的忠诚合作伙伴!欢迎广大企业事位来电来涵洽谈,荣幸之致!
北京保洁公司,技术监督局颁发清洗许可证的北京保洁公司。诚信提供北京保洁,服务周到,工作细心。承接楼宇外墙清洗,中央空调清洗,饭店油烟清先,宾馆保洁,托管。
星云科技,诚信于教育;研究出语言学习系统,语言实验室,数字化实验室,系列探究实验配套设施,望广大院校前来考察!
北京防水堵漏公司承接屋顶防水北京建筑防水卫生间防水北京屋顶防水地下室堵漏、别墅等防水施工,国内先进防水堵漏工艺。高性能原材料,对各种建筑的渗水漏水有针对性维修!做到绝不渗漏!电话:13051988748 皇甫先生 北京防水堵漏专家! 专业防水堵漏工程,工作心细,滴水不漏!北京防水网!