필터 지우기
필터 지우기

Filter data conditionally based on previous row

조회 수: 6 (최근 30일)
James Browne
James Browne 2020년 12월 26일
답변: Image Analyst 2020년 12월 26일
Hi,
I have an array of test data. I want to filter out conditionally rows which contain a value in one column that does not increase over the previous row.
I was able to do this in excel using the following if statement:
=IF(AND(AN9<=0,(AN9<AN8)),AQ9,IF(AND(AN9>=0,(AN9>AN8)),AQ9,NA()))
I think I essentially need it to return a logical value of zero if the value in the row of the column doesn't increase over the previous. A simplified example of what I want to do is:
1.0 5.0
1.3 6.0
3.1 3.0
2.0 2.0
1.9 6.0
1.8 7.0
2.4 8.0
3.5 1.0
would return:
1.3 6.0
3.1 3.0
2.4 8.0
3.5 1.0
Is there a way that I can perform something similar in Matlab?
Thanks for any help you can provide!

채택된 답변

Image Analyst
Image Analyst 2020년 12월 26일
Try this. I think it's pretty self-explanatory.
m = [...
1.0 5.0
1.3 6.0
3.1 3.0
2.0 2.0
1.9 6.0
1.8 7.0
2.4 8.0
3.5 1.0 ]
col1Differences = [0; diff(m(:, 1))] % Get differences from one row to the next in column 1.
rowsToExtract = col1Differences > 0; % Get a logical vector of what rows have positive differences.
m2 = m(rowsToExtract, :) % Extract only those rows with a positive difference.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Statistics and Linear Algebra에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by