Setting X as a column of a matrix
조회 수: 11 (최근 30일)
이전 댓글 표시
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
채택된 답변
Matt Fig
2012년 9월 11일
편집: Matt Fig
2012년 9월 11일
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
Matt Fig
2012년 9월 13일
편집: Matt Fig
2012년 9월 13일
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.'
추가 답변 (2개)
Matt Kindig
2012년 9월 11일
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';
Andrei Bobrov
2012년 9월 12일
편집: Andrei Bobrov
2012년 9월 13일
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
참고 항목
카테고리
Help Center 및 File Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!