PDA

View Full Version : Basic Matlab Programming


roam
Sep15-09, 11:34 PM
http://img16.imageshack.us/img16/3078/15688239.gif

So here's my script:

x=[a, b, c, d];
w=[0.65 0.2 0.05 0.1]';
final=x*w;
disp(final);
if 65>final>=50
disp('Grade is: C')
elseif 80>final>=65
disp('Grade is: B')
elseif final>=80
disp('Grade is: A')
If final>=50
disp('Student Passes')
else
disp('Student Fails')
end

So for example I tried x = [70, 50, 30, 45]:

x=[70, 50, 30, 45];
w=[0.65 0.2 0.05 0.1]';
final=x*w;
disp(final);
if 65>final>=50
disp('Grade is: C')
elseif 80>final>=65
disp('Grade is: B')
elseif final>=80
disp('Grade is: A')
If final>=50
disp('Student Passes')
else
disp('Student Fails')
end

I got the following answer:

61.5000

Student Fails

Well, it calculated the mark correctly, but I don't understand why it says "student fails" when it should be displaying "student passes". :confused: It also doesn't display the grade. What's the problem? Can anyone help? :uhh:

MATLABdude
Sep16-09, 04:20 AM
Probably because you didn't terminate the first 'if' loop with an 'end' statement. My MATLAB may be a little rusty, but I also don't recall if you can use the relational operators in the way you do:
if 65>final>=50

You probably want to restructure with a bunch of elseif statements that make a single comparison and cascade downwards (such that you only get one output, and not all the outputs for which the final grade is valid, e.g. a mark of 90 getting you an A, B, C and fail):

if final >= 80
disp('Grade is: A')
elseif grade >=65
disp('Grade is: B')
%other stuff
end


EDIT: Mathworks documentation pages for control statements, and the if statement:
http://www.mathworks.com/access/helpdesk/help/techdoc/matlab_prog/brqy1c1-1.html#brqy1c1-3
http://www.mathworks.com/access/helpdesk/help/techdoc/ref/if.html

roam
Sep16-09, 05:00 AM
Thanks a lot for your input, I tried it and it worked. :smile: :smile: