# Basic Matlab Programming

1. Sep 15, 2009

### roam

http://img16.imageshack.us/img16/3078/15688239.gif [Broken]

So here's my script:

Code (Text):
x=[a, b, c, d];
w=[0.65 0.2 0.05 0.1]';
final=x*w;
disp(final);
if 65>final>=50
elseif 80>final>=65
elseif final>=80
If final>=50
disp('Student Passes')
else
disp('Student Fails')
end
So for example I tried x = [70, 50, 30, 45]:

Code (Text):
x=[70, 50, 30, 45];
w=[0.65 0.2 0.05 0.1]';
final=x*w;
disp(final);
if 65>final>=50
elseif 80>final>=65
elseif final>=80
If final>=50
disp('Student Passes')
else
disp('Student Fails')
end
I got the following answer:

Code (Text):
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". It also doesn't display the grade. What's the problem? Can anyone help? :uhh:

Last edited by a moderator: May 4, 2017
2. Sep 16, 2009

### MATLABdude

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:
Code (Text):
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):
Code (Text):

if final >= 80
%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 [Broken]
http://www.mathworks.com/access/helpdesk/help/techdoc/ref/if.html

Last edited by a moderator: May 4, 2017
3. Sep 16, 2009

### roam

Thanks a lot for your input, I tried it and it worked.