Matlab的循环错误

时间:2018-06-05 01:52:35

标签: matlab

我是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 +,它只接受''中的一个字符。有没有办法来解决这个问题?

2 个答案:

答案 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+';