我是matlab的新手,我必须在作业中给出成绩簿的平均值,并为每个作业分配一个字母等级。
这是我收到的错误消息: 在赋值A(:) = B中,A和B中的元素数 必须是一样的。
代码:
display(gradebook);
A = table2array(gradebook);
loopend = size(A,1)
for i=1:loopend
average(i) = mean(A(i,1:5));
end
for i=1:loopend
if (average(i) <= 59)
letter(i) = 'E' ;
elseif (average(i) <= 69)
letter(i) = 'D' ;
elseif (average(i) <= 79)
letter(i) = 'C' ;
elseif (average(i) <= 85)
**letter(i) = 'C+' ;**
elseif (average(i) <= 89)
**letter(i) = 'B+' ;**
elseif (average(i) <= 100)
letter(i) = 'A' ;
end
end
display(letter)
问题出现在我想要一个C +和B +,它只接受''中的一个字符。有没有办法来解决这个问题?
答案 0 :(得分:3)
字符串可以存储在单元格数组中 - 初始化为{}
。请注意,您必须将此数组的每个项目都包装到单元格中。
letter = {};
letter(1) = {'A+'};
letter(2) = {'B'};
letter(3) = {'B+'};
display(letter);
display(letter(1));
显然字符串数组在较新版本的MATLAB中是supported(从R2016b开始)。
答案 1 :(得分:1)
是的,你不能在那里挤压2个值。所以,要么你的斑点必须是可以容纳多个值的东西(例如@barbsan答案中的单元格或字符串数组),要么你需要在char数组中给出2个点到该条目:
letter(i, :) = 'C ';
...
letter(i, :) = 'C+';