MATLAB Answers

IF statements, and its outputs.

128 views (last 30 days)
Benaiah
Benaiah on 3 Aug 2011
How should I code the if statements so I can organise the 10 outputs of each if statement into a row vector; of which I will further on place into a matrix with a few a few other row vectors?. The Marks row vector is filled prior to the 2 if statements.
Marks = [MarkAnn,MarkBob,MarkJan,MarkJim,MarkJoe,MarkKai,MarkPam,MarkSam,MarkTom,MarkZoe];
Percentages = Marks*10;
for a=1: length(Marks)
if Marks>=5
grade = PASS
else
grade = FAIL
end
end
for a=1: length(Percentages)
if Percentages<50
gpa = FAIL
elseif Percentages>=50, Percentages<65
gpa = PASS
elseif Percentages>=65, Percentages<75
gpa = CREDIT
elseif Percentages>=75, Percentages<85
gpa = DISTINSTION
elseif Percentages>=85
gpa = HIGH_DICTINCTION
end
end

  0 Comments

Sign in to comment.

Answers (4)

Arnaud Miege
Arnaud Miege on 3 Aug 2011
One possible solution:
grade = cell(size(Marks));
for a=1: length(Marks)
if Marks(a)>=5
grade{a} = 'PASS';
else
grade{a} = 'FAIL';
end
end
Use a similar approach for gpa. It might possible to vectorize the for loops.
HTH,
Arnaud

  3 Comments

Arnaud Miege
Arnaud Miege on 3 Aug 2011
Are PASS and FAIL variables that have already been defined or just strings. The code I posted is for strings. If they are variables, you'll need to do that instead:
grade = zeros(size(Marks));
for a=1: length(Marks)
if Marks(a)>=5
grade(a) = PASS;
else
grade(a) = FAIL;
end
end
or simply
grade = zeros(size(Marks));
grade(Marks>=5) = PASS;
grade(Marks<5) = FAIL;
Benaiah
Benaiah on 3 Aug 2011
What u suggested worked, as i now get all the row vectors needed for the matrix in the workspace.
But it returns the error "??? Error using ==> vertcat
CAT arguments dimensions are not consistent." Therefore stopping the output of the matrix.
How can i stop that error from occurring??
Arnaud Miege
Arnaud Miege on 5 Aug 2011
Which line of code does the error point to? Can you post your updated code?

Sign in to comment.


bym
bym on 10 Aug 2011
Percentages=rand(10,1)*100;
gpa = cell(1,length(Percentages));
for a = 1:length(Percentages)
if Percentages(a) < 50
gpa{a} = 'fail';
elseif Percentages(a) >=50 && Percentages(a) < 65
gpa{a} = 'pass';
elseif Percentages(a) >=65 && Percentages(a) < 75
gpa{a} = 'credit';
elseif Percentages(a) >=75 && Percentages(a) < 85
gpa{a} = 'distiction';
else
gpa{a} = 'high distinction';
end %if
end %for
gpa'

  0 Comments

Sign in to comment.


Walter Roberson
Walter Roberson on 11 Aug 2011
NameMarkGradeGPA = [Names;num2cell(Marks);Grade;GPA]

  1 Comment

Benaiah
Benaiah on 12 Aug 2011
Thanks for all the help guys, i really appreciate it.

Sign in to comment.


Benaiah
Benaiah on 11 Aug 2011
Everything works, but it won't give me the output matrix due to the same error of
"??? Error using ==> vertcat CAT arguments dimensions are not consistent."
I know the Marks row vector is causing the problem as the code below demonstrates.
NameMarkGradeGPA = [Names;Grade;GPA]
NameMarkGradeGPA =
Columns 1 through 9
'Ann' 'Bob' 'Jan' 'Jim' 'Joe' 'Kai' 'Pam' 'Sam' 'Tom'
'FAIL' 'FAIL' 'FAIL' 'FAIL' 'PASS' 'PASS' 'PASS' 'PASS' 'PASS'
'FAIL' 'FAIL' 'FAIL' 'FAIL' 'PASS' 'PASS' 'CREDIT' 'DISTINSTION' 'HIGH_DICTINCTION'
Column 10
'Zoe'
'PASS'
'HIGH_DICTINCTION'
How can i put the Marks row vector into the matrix without the vertcat error occuring.

  0 Comments

Sign in to comment.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by