提交给 Matlab Grader 时变量具有 "incorrect" 值

Variable has "incorrect" value when submitted to Matlab Grader

我正在为我的 Matlab 作业苦苦挣扎:

编写一个脚本来执行以下操作:

  1. 生成一个名为 grades 的矩阵,大小为 8 x 25,其中包含 double 类型的随机数,范围为 1 到 6。

  2. 计算矩阵行的均值(mrow)、矩阵列的均值(mcol)以及矩阵的总均值(mall)矩阵等级。

  3. 将矩阵grades复制到一个新变量中,将其中第5行和第20至23列的元素替换为NaN。再次计算该矩阵的总体平均值 (mall_2),即剩余值的平均值。

我完成了任务 2-5,但是任务 1 不正确。我不确定我做错了什么。我假设它与数字类型(double)有关,但我无法转换它。

我们必须将作业提交到在线工具"Matlab Grader"。系统说:

Matrix of random numbers : Variable grades has an incorrect value.

这是我的代码:

% 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')

我假设您的作业验证系统正在检查变量 grades 中的所有内容是否都是 1 到 6 范围内的(随机)数字,如问题 1 所要求的那样。

但是,在您的计算结束时,grades 变量中还有 3 个 NaN 值,因为您错过了问题 3 的这一步:

Copy the matrix grades to a new variable

相反,您覆盖了 grades 中的元素。

如果你这样做了:

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

然后 grades 将保留其原始值(没有 NaN),您可以计算 mall_2.