【发布时间】:2016-05-20 19:10:03
【问题描述】:
我正在解决 MIT OCW 的 MATLAB 入门课程中的一组问题。你可以看到它here,它是第 9 号问题,第 g.iii 部分。
我有一个包含课程最终成绩的矩阵,所有这些都在 1 到 5 之间。我还有另一个数组,其中只有从 'F' 到 'A' 的字母(按 'decreasing' 顺序)。
我知道如何更改矩阵中的元素,我想我可以为每个数字做这样的事情:
totalGrades(find(totalGrades==1)) = 'F';
totalGrades(find(totalGrades==2)) = 'E';
totalGrades(find(totalGrades==3)) = 'C';
totalGrades(find(totalGrades==4)) = 'B';
totalGrades(find(totalGrades==5)) = 'A';
那么,创建字符串数组“字母”的目的是什么?
我考虑过使用循环,但我们应该在课程的那个阶段不用循环来解决问题。
有办法吗?我很高兴知道。这是我的整个问题的代码,但我陷入了最后一个问题。
load('classGrades.mat');
disp(namesAndGrades(1:5,1:8));
grades = namesAndGrades(1:15,2:size(namesAndGrades,2));
mean(grades);
meanGrades = nanmean(grades);
meanMatrix = ones(15,1)*meanGrades;
curvedGrades = 3.5*(grades./meanMatrix);
% Verifying
nanmean(curvedGrades)
mean(curvedGrades)
curvedGrades(curvedGrades>=5) = 5;
totalGrades = nanmean(curvedGrades,2);
letters = 'FDCBA';
非常感谢!
【问题讨论】:
-
可能是
totalGrades(find(totalGrades==1))=letters(1);然后totalGrades(find(totalGrades==2))=letters(2);等等... -
或者你可能想试试
arrayfun() -
这将是一个很好的问题问你的教授。另见:Matrix Indexing
-
它确实改变了一些东西,但我不知道是否需要一些额外的行来将数字转换为字符串。看看我的结果:totalGrades(totalGrades==5)=letters(5) y = 4 3 4 4 4 65 3 3 4 3 3 3 3 65 4
标签: arrays string matlab indexing numbers