Setting X as a column of a matrix
11 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
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.
0 comentarios
Respuesta aceptada
Matt Fig
el 11 de Sept. de 2012
Editada: Matt Fig
el 11 de Sept. de 2012
Use a FOR loop to loop over the rows of column 2. But you are going to want to define A,B,C,D,F or you will get errors. Unless you mean 'A','B','C','D','F'. And to store the values, assign each one to a position in an array.
for ii = 1:length(M)
X = M(ii,2); % Assign this value to X, each time through
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
GR(ii) = y
end
3 comentarios
Matt Fig
el 13 de Sept. de 2012
Editada: Matt Fig
el 13 de Sept. de 2012
So did you try it? Like I said, you should use 'A' instead of A, 'B' instead of B...
M = [1, 80.8 %A Matrix for the grades
2, 79
3, 87.4
4, 74.2
5, 82
6, 85]
for ii = 1:length(M)
X = M(ii,2);
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
GR(ii) = y;
end
GR.'
Más respuestas (2)
Matt Kindig
el 11 de Sept. de 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 comentario
Andrei Bobrov
el 12 de Sept. de 2012
Editada: Andrei Bobrov
el 13 de Sept. de 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));
0 comentarios
Ver también
Categorías
Más información sobre Loops and Conditional Statements en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!