MATLAB: Help passing column vector of doubles to function to get letter grade for all grades

matlab function

How do I pass a column vector of scalars (Fall2016_final_grades) to a function that will determine the letter grade and return the letter grades for each final mark?Here is the column vector of scalars (doubles)
73.5795000000000 84.6240000000000 85.8600000000000 62.9090000000000 59.3615000000000 56.8435000000000 66.4200000000000 60.7525000000000 85.8570000000000 90.5325000000000 75.0720000000000 58.9405000000000 70.6450000000000 85.5070000000000 74.8330000000000 62.5670000000000 91.3055000000000 72.8305000000000 79.4935000000000 89.8125000000000 59.1890000000000 66.4235000000000 62.0870000000000 65.0450000000000 76.8210000000000 73.1675000000000 71.5495000000000 64.0315000000000 45.8685000000000 74.1810000000000 63.7955000000000 71.2370000000000 53.2250000000000 73.7825000000000 82.5335000000000 72.0670000000000 82.4175000000000 72.8915000000000 62.2905000000000 76.3760000000000 69.8820000000000 65.6705000000000 72.8230000000000 76.7040000000000 57.9810000000000 73.1815000000000 59.8060000000000 66.3775000000000 72.9980000000000 83.1400000000000 86.1280000000000 59.0540000000000 68.9205000000000 77.7350000000000 68.2320000000000 59.4720000000000
Here is the function I built so far
function grade=letter_grade(n)
if n >= 90 grade='A+';
elseif n >= 80 n<=89 grade='A';
elseif n >= 75 n<=79 grade='B+';
elseif n >= 70 n<=74 grade='B';
elseif n >= 65 n<=69 grade='C+';
elseif n >= 60 n<=64 grade='C';
elseif n >= 55 n<=59 grade='D+';
elseif n >= 50 n<=54 grade='D';
elseif n >=45 n<=49 grade='E';
else grade='F';
end
end
When I perform a function call
>>letter_grade(Fall2016_final_grades)
I get this error message: Operands to the and && operators must be convertible to logical scalar values. Error in letter_grade (line 4) elseif n >= 80 n>=89
How can I fix my function to perform this call and get a result of letter_grades for each scalar value in colum vector?

Best Answer

Call your function in a loop for each element of n, or put code inside your function to loop over all the elements of n. For the output, you will need to decide how to output the grades. Since you have strings of varying lengths, maybe a cell array would suffice. E.g., something like this if you put a loop inside the function:
function grade=letter_grade(n)
grade = cell(size(n));
for k=1:numel(n)
if n(k) >= 90
grade{k}='A+'; % <-- note the use of curly braces
elseif n(k) >= 80 % <-- note only one test since we know n(k) < 90 already
grade{k}='A';
:
etc