IF statements, and its outputs.

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

回答(4 个)

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 个评论

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;
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??
Which line of code does the error point to? Can you post your updated code?

请先登录,再进行评论。

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'
NameMarkGradeGPA = [Names;num2cell(Marks);Grade;GPA]
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.

类别

帮助中心File Exchange 中查找有关 Loops and Conditional Statements 的更多信息

产品

提问:

2011-8-3

Community Treasure Hunt

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

Start Hunting!

Translated by