Переменная имеет «неправильное» значение при отправке в Matlab Grader - PullRequest
1 голос
/ 25 октября 2019

Я борюсь с домашним заданием по Matlab:

Напишите скрипт для выполнения следующих действий:

  1. Создайте матрицу под названием оценки размера8 x 25, который содержит случайные числа типа double в диапазоне от 1 до 6.

  2. Рассчитать среднее значение строк матрицы (mrow), среднее значение столбцов матрицы (mcol) и общее среднее (mall) рангов матрицы.

  3. Скопируйте матрицу grades в новую переменную, в которой вы замените элементы в 5-й строке. и с 20 по 23 столбец с NaN. Снова вычислите общее среднее значение (mall_2) этой матрицы, т.е. среднее из оставшихся значений.

Я выполнил задание 2-5, однако задание 1 не выполненоверный. Я не уверен, что я делаю неправильно. Я предполагаю, что это как-то связано с типом числа (double), но я не смог его преобразовать.

Мы должны представить нашу домашнюю работу онлайн-инструменту "Matlab Grader". Система говорит:

Матрица случайных чисел: переменные оценки имеют неверное значение.

Вот мой код:

% Generate matrix 'grades' with random numbers in the range 1 to 6

a = 1;
b = 6;
grades = (b-a).*rand(8,25) + a;

% calculate mean values 'mrow', 'mcol', 'mall'
mrow = mean(grades,2)
mcol = mean(grades,1)
mall = mean(grades(:))
% Replace elements with NaN
grades(5,20:23) = NaN
%Calculate mean of elements omitting NaN
mall_2 = mean(grades(:),'omitnan')

1 Ответ

1 голос
/ 25 октября 2019

Я предполагаю, что ваша система проверки домашних заданий проверяет, что все в переменной grades является (случайным) числом в диапазоне от 1 до 6, как того требует вопрос 1.

Однако к концуВ ваших вычислениях также есть 3 NaN значения в переменной grades, потому что вы пропустили этот шаг вопроса 3:

Скопируйте матрицу grades в новую переменную

Вместо этого вы переопределите элементы в grades.

Если вы сделали это:

grades_mod = grades;
grades_mod(5,20:23) = NaN;
mall_2 = mean(grades_mod(:),'omitnan');

Тогда grades сохранит свои исходные значения (без NaN), и выможно рассчитать mall_2.

...