Matlab:字符串数组中的数字数组索引(无循环)

2023-12-01

我正在做 MIT OCW MATLAB 入门课程中的一系列问题。你可以看到here,这是问题 9,第 g.iii 部分。

我有一个矩阵,其中包含一门课程的最终成绩,所有成绩的范围都从 1 到 5。我还有另一个数组,其中仅包含字母'F' to 'A' (in a 'decreasing' order).

我知道如何更改矩阵中的元素,我想我可以对每个数字执行类似的操作:

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

那么,创建字符串数组“letters”的目的是什么?

我考虑过使用循环,但我们应该在课程的这一点上解决没有循环的问题。

有办法吗?我很高兴知道。这是整个问题的代码,但我陷入了最后一个问题。

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

多谢!


Try:

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

Result:

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).

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Matlab:字符串数组中的数字数组索引(无循环) 的相关文章

随机推荐