How to use if command?
조회 수: 2 (최근 30일)
이전 댓글 표시
Say I have a table X = (columnA, columnB, columnC) What is wrong with the following command? The result is always columnB = columnA no matter what condition and which line. There are numbers in columnA smaller than 30 or larger than 90 just so you know. Thank you in advance!!
for i = 1:numel(columnA)
if 30 < columnA(i) < 90
columnB(i) = columnA(i);
else
columnB(i) = columnC(i);
end
end
end
댓글 수: 1
Stephen23
2018년 5월 21일
The syntax you use does not do what you think it does. You will need to use
A<X && X<B
The syntax that you used is equivalent to this:
(A<X)<B
You can learn why by reading the MATLAB documentation:
채택된 답변
Walter Roberson
2018년 5월 21일
30 < columnA(i) < 90 means the same as ((30 < columnA(i)) < 90) . The first part results in 0 (false) or 1 (true), and that 0 or 1 is then compared to 90 and since both are < 90, the result of the test is always true.
MATLAB does not have any range tests of the form A < x < B , with the exception that such ranges are sometimes recognized in some MATLAB versions but only in calls to piecewise()
댓글 수: 2
Walter Roberson
2018년 5월 21일
mask = 30 < X.ColumnA & X.ColumnA < 90;
X.ColumnB(mask) = X.ColumnA(mask);
X.ColumnB(~mask) = X.ColumnC(~mask);
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Matrices and Arrays에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!