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

Respuestas (4)

Arnaud Miege
Arnaud Miege el 3 de Ag. de 2011

2 votos

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 comentarios

Arnaud Miege
Arnaud Miege el 3 de Ag. de 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 el 3 de Ag. de 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 el 5 de Ag. de 2011
Which line of code does the error point to? Can you post your updated code?

Iniciar sesión para comentar.

bym
bym el 10 de Ag. de 2011

1 voto

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'
Walter Roberson
Walter Roberson el 11 de Ag. de 2011

1 voto

NameMarkGradeGPA = [Names;num2cell(Marks);Grade;GPA]

1 comentario

Benaiah
Benaiah el 12 de Ag. de 2011
Thanks for all the help guys, i really appreciate it.

Iniciar sesión para comentar.

Benaiah
Benaiah el 11 de Ag. de 2011

0 votos

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.

Categorías

Más información sobre Loops and Conditional Statements en Centro de ayuda y File Exchange.

Productos

Preguntada:

el 3 de Ag. de 2011

Community Treasure Hunt

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

Start Hunting!

Translated by