Filter value from multiple columns
8 views (last 30 days)
Show older comments
Augusto Gabriel da Costa Pereira
on 9 Feb 2023
Commented: Mathieu NOE
on 9 Feb 2023
I have the following array named "tNino1_2"
I want to filter the value equal to 1 from columns 20, 21, 22, 23 and 24
The script I'm using is below:
xcol=20:1:24
idx=tNino1_2(tNino1_2(:,xcol)==1,:)
The logical indices in position 1 contain a true value outside of the array bounds.
4 Comments
Dyuman Joshi
on 9 Feb 2023
Do you want to find the position (both row and column values) of elements equal to one between columns 20 to 24?
Accepted Answer
Mathieu NOE
on 9 Feb 2023
hello
I assumed you want all the rows where there is at least one 1 in the columns 20 to 24
xcol=20:1:24;
[r,c] = find(tNino1_2(:,xcol)==1);
[ru,ia,ic] = unique(r);
out = tNino1_2(ru,:);
2 Comments
More Answers (1)
Voss
on 9 Feb 2023
Edited: Voss
on 9 Feb 2023
load tNino1_2
"find the values equal to 1 in columns 20 to 24"
[r,c] = find(tNino1_2(:,20:24) == 1)
r is rows and c is columns. Of course, c is relative to columns 20-24 only, so c = 1 means column 20 of the original matrix, c = 2 means column 21, etc.
You can add 19 to c to get the locations of the 1s in the original matrix
c = c+19
Confirm that the elements at those locations are all 1s:
temp = tNino1_2(sub2ind(size(tNino1_2),r,c))
all(temp == 1)
See Also
Categories
Find more on Logical 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!