我正在为Matlab作业苦苦挣扎:
编写脚本以执行以下操作:
生成一个称为8 8 x 25等级的矩阵,其中包含1到6范围内double类型的随机数。
计算矩阵等级的矩阵行的平均值(mrow
,矩阵列的平均值(mcol
)和总体平均值(mall
)。 / p>
将矩阵grades
复制到一个新变量中,在其中将第5行和第20至23列中的元素替换为NaN。再次计算此矩阵的总体平均值(mall_2
,即剩余值的平均值。
我完成了任务2-5,但是任务1不正确。我不确定自己在做什么错。我认为这与数字的类型(双精度)有关,但是我无法对其进行转换。
我们必须将作业提交给在线工具“ 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')
答案 0 :(得分:1)
我假设您的作业验证系统正在检查变量grades
中的所有内容是否都是问题1所要求的(随机)数字,范围为1到6。
但是,在计算结束时,NaN
变量中还有3个grades
值,因为您错过了问题3的这一步骤:
将矩阵
grades
复制到新变量
相反,您覆盖了grades
中的元素。
如果您这样做:
grades_mod = grades;
grades_mod(5,20:23) = NaN;
mall_2 = mean(grades_mod(:),'omitnan');
然后grades
将保留其原始值(无NaN),您可以计算mall_2
。