Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays Matlab:将数值数组索引为字符串数组(无循环)_Arrays_String_Matlab_Indexing_Numbers - Fatal编程技术网

Arrays Matlab:将数值数组索引为字符串数组(无循环)

Arrays Matlab:将数值数组索引为字符串数组(无循环),arrays,string,matlab,indexing,numbers,Arrays,String,Matlab,Indexing,Numbers,我正在做麻省理工开放式课程的MATLAB入门课程中的一系列问题。你可以看到,这是问题9,g.iii部分 我有一个矩阵,上面有一门课程的最终分数,所有分数都在1到5之间。我还有另一个数组,其中只有从'F'到'A'的字母(按递减的顺序) 我知道如何改变矩阵中的元素,我想我可以对每个数字做如下操作: totalGrades(find(totalGrades==1)) = 'F'; totalGrades(find(totalGrades==2)) = 'E'; totalGrades(find(tot

我正在做麻省理工开放式课程的MATLAB入门课程中的一系列问题。你可以看到,这是问题9,g.iii部分

我有一个矩阵,上面有一门课程的最终分数,所有分数都在1到5之间。我还有另一个数组,其中只有从
'F'
'A'
的字母(按
递减的顺序)

我知道如何改变矩阵中的元素,我想我可以对每个数字做如下操作:

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';
非常感谢

试试看:

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
编辑(简要说明):
很容易理解,当你做
字母(2)
时,你会得到字母的第二个元素(
D
)。 但是您也可以通过给它一个数组从
字母中选择几个元素:
字母([12])
将返回第一个和第二个元素(
FD
)。
因此,
letters(indexesArray)
将生成一个新数组,该数组的长度与
indexesArray
相同。但是,此数组必须包含从1到
字母长度的数字(否则会弹出错误)。

可能类似于
totalGrades(find(totalGrades==1))=字母(1)然后
totalGrades(查找(totalGrades==2))=字母(2)
等等……或者你可能想试试类似于
arrayfun()
的东西。这是一个很好的问题,可以问你的教授。另请参阅:它确实改变了一些东西,但我不知道是否需要一些额外的行来将数字转换为字符串。看看我的结果:totalGrades(totalGrades==5)=字母(5)y=4 3 4 4 4 65 3 3 4 3 3 3 65 4这将有助于解释为什么会出现这种情况,因为这是OP不理解的部分。非常感谢R.Schifini,搞定了它。和往常一样,这是一个非常简单的解决方案。需要进一步研究。您试图使用逻辑索引将数字更改为字母,但此解决方案更像是使用总等级作为索引数组来查找字母。