Matlab:数值数组索引到一个字符串数组(没有循环)

时间:2016-02-10 12:18:08

标签: arrays string matlab indexing numbers

我在麻省理工学院开放式课程的MATLAB入门课程中做了一系列问题。您可以看到它here,它的问题编号9,部分g.iii。

我有一个矩阵,其中包含一个课程的最终成绩,所有这些都在1到5之间。我还有另一个数组,其中只有'F''A'的字母(在{{1}中订购)。

我知道如何更改矩阵中的元素,我想我可以为每个数字做这样的事情:

'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';

非常感谢!

1 个答案:

答案 0 :(得分:1)

尝试:

letters=['F','D','C','B','A'];
tg = [1 2 1 3 3 1];
letters(tg)

结果:

ans = FDFCCF

即使tg(总成绩)是矩阵,这也有效:

letters=['F','D','C','B','A'];
tg = [1 2 1 ; 3 3 1];
result = letters(tg);
result


result =                                                                                                                                                                             

FDF                                                                                                                                                                             
CCF

编辑(简要说明):
很容易理解当你执行letters(2)时,你得到第二个字母元素(D)。

但您也可以通过为其添加数组来选择letters中的多个元素:letters([1 2])将返回第一个和第二个元素(FD)。

因此,letters(indexesArray)将生成一个长度相同indexesArray的新数组。但是,此数组必须包含从1到letters长度的数字(否则会弹出错误)。