Setting X as a column of a matrix
Show older comments
So I have another question: How do i tell MATLAB to go thru the matrix and take the second column of this and apply it to the if statement i have coded below:
M = [1, 80.8 %A Matrix for the grades
2, 79
3, 87.4
4, 74.2
5, 82
6, 85]
%The following if, else if and else statement calculates the grades based
%on the values of X.
if X<60
y = F
elseif X>=60 & X<70
y = D
elseif X>=70 & X<80
y = C
elseif X>=80 & X<90
y = B
else
y = A
end
After I do that, I want it to output into a matrix like the one above, but with another column where the y will go.
Accepted Answer
More Answers (2)
Matt Kindig
on 11 Sep 2012
You can also do this using logical indexing, which is a more "Matlab-y" way to do this problem...
y = repmat('A', size(M(:,1))); %set default grade to 'A'
X = M(:,2);
%these various truth conditions assign letter grade appropriately
y(X<60) = 'F';
y(X>=60 & X<70) = 'D';
y(X>=70 & X<80) = 'C';
y(X>=80 & X<90)= 'B';
1 Comment
Matt Fig
on 12 Sep 2012
See the OP's previous post for more info...
Andrei Bobrov
on 12 Sep 2012
Edited: Andrei Bobrov
on 13 Sep 2012
M = [1, 80.8 %A Matrix for the grades
2, 79
3, 87.4
4, 74.2
5, 82
6, 85];
x = cellstr(['F';('D':-1:'A')']); % OR x = ['F';('D':-1:'A')'];
[a,b] = histc(M(:,2),[-inf,(6:9)*10,inf]);
out = x(b);
OR
x = ['F';('D':-1:'A')'];
out = x(sum(bsxfun(@gt,M(:,2),[-inf,(6:9)*10,inf]),2));
Categories
Find more on Loops and Conditional Statements in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!