How to filter data in a variable based on its value
조회 수: 60 (최근 30일)
이전 댓글 표시
Hello,
I have one 100 by 3 array which contains random values from 0 to 1000
I wanted to filter the data in a new array so that only values above 500 are shown.
To do this I did
A = randi([0 1000],100,3) %Generates random numbers from 0 to 1000 in a 100by3 array
A(A>500) %This is the area I need help
In the code above, A(A>500) only shows me values from the first column of A which are greater than 500.
How can I extend this so that A(A>500) will generate a x by 3 array?
댓글 수: 0
채택된 답변
Star Strider
2020년 5월 7일
This will set the elements that are less than or equal to 500 to 0:
A = A.*(A>500);
It preserves the structure of ‘A’.
댓글 수: 2
Star Strider
2020년 5월 7일
Try this:
A = randi([0 1000],100,3); %Generates random numbers from 0 to 1000 in a 100by3 array
% A(A>500) %This is the area I need help
Ac = mat2cell(A, ones(1,size(A,1)), ones(size(A,2),1)); % Create Cell Array
ix = cell2mat(cellfun(@(x)x>500,Ac, 'Uni',0)); % Logical Index Matrix
Ac(~ix) = {[]}; % Output
My intent was to have the elements that did not meet the criterion be empty [] elements. They are 0 instead. That may reflect a difference in how cell arrays are handled in R2020a.
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Creating and Concatenating Matrices에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!