Matlab для ошибки цикла - PullRequest
0 голосов
/ 05 июня 2018

Я новичок в 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)

Проблема возникает в том, что Iхочу иметь C + и B +, он принимает только 1 символ в пределах ''.Есть ли способ это исправить?

Ответы [ 2 ]

0 голосов
/ 05 июня 2018

Да, вы не можете сжать там 2 значения.Таким образом, либо ваши пятна должны быть чем-то, что может содержать несколько значений (например, ячейка или строковый массив, как в ответе @barbsan), либо вам нужно дать 2 точки в массиве char для записи:

letter(i, :) = 'C ';
...
letter(i, :) = 'C+';
0 голосов
/ 05 июня 2018

Строки могут быть сохранены в массиве ячеек - инициализированы как {}.Обратите внимание, что вы должны обернуть каждый элемент этого массива в ячейку.

letter = {};
letter(1) = {'A+'};
letter(2) = {'B'};
letter(3) = {'B+'};

display(letter);
display(letter(1));

Очевидно, строковые массивы поддерживаются в более новых версиях MATLAB (начиная с R2016b).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...