finding mean scores of students tests compared to rest of class

Hello, I am working on this problem. To give you some context, there is an 150x10 array of test scores ranging from 1-10. sNum is the student number.
Assign to the variable curveBusters an S-by-1 array (S may be 0) of the student numbers whose average score (across all tests) was strictly higher than average score of the student indicated by sNum.
Here is my code
curveBusters = find(mean(Grades(sNum,:)) < mean(Grades(:,:)));
There was a previous problem
Assign to the variable betteredBy an S-by-1 array (S may be 0) of the student numbers that got a strictly higher score than the student indicated by sNum on the test indicated by testNum.
and this was my code that is correct
betteredBy = find((Grades(sNum,testNum) < (Grades(:,testNum))));
So I can't figure out what is wrong with my code for the means.

 Réponse acceptée

I think you need to read that more carefully than you did. This is what I get. Speak up if you don't understand why I did any of the operations:
Grades = randi(10, [150, 10]) % Sample data.
% Row = student number
% Columns = grades for the student in that row.
% Assign to the variable curveBusters an S-by-1 array (S may be 0)
% of the student numbers whose average score (across all tests) was
% strictly higher than average score of the student indicated by sNum.
studentAverages = mean(Grades, 2)
studentMins = min(Grades, [], 2)
allScoresHigherThanMean = studentMins > studentAverages;
curveBusters = find(allScoresHigherThanMean)
% Assign to the variable betteredBy an S-by-1 array (S may be 0)
% of the student numbers that got a strictly higher score than
% the student indicated by sNum on the test indicated by testNum.
% Note: that is unclear since score does not refer to what score --
% it could be the mean of student 6 or all scores of student 6.
sNum = 6;
allScoresHigherThanSNum = studentMins > studentAverages(sNum);
betteredBy = find(allScoresHigherThanSNum);

1 commentaire

This is what I ended up getting
curveBusters = find(mean(Grades') > mean(Grades(sNum,:)))';

Connectez-vous pour commenter.

Plus de réponses (1)

Joseph Cheng
Joseph Cheng le 18 Juin 2014
well in your curve busters equation you have the find() function looking for the students that are performing less than (<) the mean of the grades. They wouldn't be curve busting right? Those would be curve helpers.

5 commentaires

I'm finding students who got higher than the student in question, sNum
Joseph Cheng
Joseph Cheng le 18 Juin 2014
Modifié(e) : Joseph Cheng le 18 Juin 2014
NVM... the question was confusing... sNum is a specific student.
the
curveBusters = find(mean(Grades(sNum,:)) < mean(Grades(:,:)));
mean portion has the mean is taking the mean of all the columns.. such that you'll get a 1x10 result. which will be finding which test performed better than the average of student sNum.
You'll need to take the mean(Grades,2) which the average of the rows. this will get you the 150x1 matrix. or the average of each student's test scores.
I got confuses with the line sNum is the student number so i was thinking sNum was 1:150 not a specific student. if sNum was 1:150 which would then be which students score better than average as they would be curve busters.
is the sNum specified in the question someone in the middle of the curve?
sNum is a random student. In this particular case its student 6

Connectez-vous pour commenter.

Catégories

En savoir plus sur MATLAB dans Centre d'aide et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by