不错的
函数bmi = bmi_calculator(hw)
h_inch = hw(:,1);
h_m = h_inch。* 2.54 / 100;
w_pounds = hw(:,2);
W_kg = w_pounds .* 0.453592;
BMI = w_kg / (h_m .* h_m);
体重指数= bmi(:,结束);
结束
即使它给了我机器上的精确输出,即使它也会得到断言错误。有人知道这个问题吗?
正在得到一个断言错误,但最终在头脑风暴的15分钟后得到了它
函数bmi = bmi_calculator(hw)
%将英寸从英寸转换为米的高度值
高度= HW(:,1)./(2.54 * 10 ^ -2)
%将重量值从磅转换为公斤
重量= hw / 2.2 (:, 2)
计算身高和体重组合的bmi,并返回输出变量bmi
体重指数=。/(高度。^ 2);
结束
有人能帮我找到断言错误吗?
好一个!
任何人都可以解释原因
“体重指数= convmass (hw(:, 2),“加快”,“公斤”)。/ (convlength (hw(: 1),“在”,“m”)。^ 2);“
不起作用?
@Michael Green:谢谢你指出convmass和convlength…我不知道有这些东西存在。
你的尝试没有成功,因为转换四舍五入。作者指出1" = 2.54cm。这种转换是精确的,并且匹配convlength。
作者还指出,1kg = 2.2磅。该转换是四舍五入的,而convmass利用了更精确的转换因子(2.2046)。如果你使用作者指示的转换系数(即,不要使用convmass),它将起作用。
我的解通过了第一次测试,小数点后四位精度达到4,但第二次测试失败了。不确定这是怎么可能的,即使转换因素不一样。顺便说一下,我用第二次测试中选择的值得出的答案与NIH计算器计算的结果完全吻合。
你的第一次验证是错误的
注意单位转换,
高度= HW(:,1)* 2.54 / 100;
我回答得很好。我可以在我的桌面MATLAB中测试hem但是我在测试第一个状态时出现了错误"error using assert"
您的功能将结果作为行向量而不是列向量返回。MATLAB默认为仅指定一个维度时将结果写入行向量时,因此将FOR循环分配更改为BMI(i,1)= ...以强制列向量(或在循环之后转换BMI)。
我解决了这个问题,但奇怪的是我必须乘以10000 ro的BMI结果获得正确的结果。不知何故没有乘法的结果不是确切的结果。有没有人面对同样的东西?
你用厘米来代替米来表示高度了吗?
您已经使用2.54转换系数将英寸转换为厘米,而不是米。
啊是的,谢谢你指出伙计们,对不起迟到的回复:/
条件输入参数必须可转换为标量逻辑。
如何纠正这个错误?
通过除以39.37失败将高度分开。但是,39.3701通过了第一次测试,但失败了第二。我不得不找到更近的价值来满足第二次测试,39.37008。您应该提高测试参数。
bmi_correct和bmi_calculator是相同的。即便如此,我也会得到断言错误
我这个代码有什么问题,最终答案也是匹配的,但它显示为失败,我没有得到它。
领导解决方案是不正确的。代码有注释,分别转换身高和体重,然后是bmi计算。Bmi不应该像在领先的解决方案中那样,通过计算所有的因素在一行代码中计算。
非常狭窄的断言范围。解决方案是正确的,但由于断言的狭窄限制不能进行。
问题指定输入HW是具有两列(不是表)的矩阵。因此,错误就是说,无法在矩阵上使用点索引。
不知道BMI这么简单。
我有正确的价值,但我以某种方式失败了吗?
预期的输出是包含所有bmi值的列向量,而您的代码返回一个bmi值,即最后一个。希望会有帮助!
增加公差值。我必须非常具体,以匹配结果
好的!