function 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);
IM GETTING ASSERTION ERROR....EVEN THOUGH IT GIVES ME EXACT OUTPUT ON MY MACHINE. ANYONE HAVING IDEA ABOUT THIS ?
was getting an assertion error but finally got it after 15 minutes of brainstorming
function bmi = bmi_calculator(hw)
% Convert the height values from inches to meters
% Convert the weight values from lbs to kilograms
% Calculate the bmi for height and weight combination and return the output variable 'bmi'
bmi = weight./(height.^2);
can anyone help me to find the aassertion error?
Can anyone explain why
"bmi = convmass(hw(:,2),'lbm','kg') ./ (convlength(hw(:,1),'in','m').^2);"
@Michael Green: thanks for pointing out convmass and convlength...I did not know that those existed.
Your attempt doesn't work because of conversion round-off. The author indicates that 1" = 2.54cm. That conversion is exact and matches convlength.
The author also indicates that 1kg = 2.2lbs. That conversion is rounded, whereas convmass utilizes a more accurate conversion factor (2.2046). If you use the conversion factor indicated by the author (i.e., don't use convmass), it will work.
My solution passes the first test and I have 4 decimal place accuracy yet I fail the second test. Not sure how this is possible even if the conversion factors aren't the same. By the way, my answer using the values chosen for the second test exactly match those calculated using the NIH calculator.
The comments in the solution are there just to help. The solution can be done in a single statement to improve the size.
The tolerance in assert is very high. Its not worthwhile to tune the decimal places to get that tolerance.
Reconsider the problem and reduce the tolerance.
This is the standard tolerance used in Cody. You'll encounter that frequently with many problems involving floating point numbers. There is nothing unsolvable/hard specifically about it.
Your first verification is FALSE
be careful about the unit convertion,
height = hw(:,1) * 2.54 / 100;
I made a good answer. and I was able to test hem in my desktop MATLAB but I got error with testing the first status here "error using assert"
Your function is returning the result as a row vector rather than a column vector. MATLAB defaults to writing results as a row vector when only one dimension is specifed, so change your for-loop assignments to bmi(i,1) = ... to force a column vector (or transpose bmi after the loop).
Please, do we need to sum up values of all rolls and columns respectively to calculate the BMI?
No. Use Elementwise operations.
Using regex just to wrap the entire code is just a tricky way of winning. The solution is no better than the others.
I solved the problem but the weird thing is that I had to multiply the bmi result with 10000 ro get the right results. Somehow the results without the multiplication were not the exact results. Have anyone faced the same things?
Did you use height in cm instead of in metres?
You have converted inches to centimeters and not meters by using the conversion factor 2.54.
Ah yes, thank you for pointing out guys, and sorry for the late response :/
"The condition input argument must be convertible to a scalar logical."
how this error is rectified?
Dividing height in inches by dividing by 39.37 fails. However, 39.3701 passes first test but fails the second. I had to find a closer value to satisfy second test, 39.37008. You should improve the test parameters.
bmi_correct and bmi_calculator are same. even then I am getting assertion error
What is wrong i this code, The final answers are also matching but it is showing as a fail, I am not getting it.
Leading solution is not correct. The code has comment to convert the height and weight seperately followed by the bmi computation. bmi should not be calculated in one line of code as in leading solution by crunching all the factors.
a very narrow range of assertions. The solution is correct, but can not proceed due to narrow limits of the assertions.
The problem specifies that the input hw is a matrix with two columns (not a table). So, the error is saying that you cannot use dot indexing on a matrix.
Didn't know this is how simple BMI is.
I've got the right values but I've failed the assertion somehow?
The expected output is a column vector containing ALL the bmi values, whereas your code returns a single bmi value i.e. the last one. Hope that helps!
increase the tolerance value..i had to be very specific to match the result
Find the treasures in MATLAB Central and discover how the community can help you!
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Contact your local office