How to filter data in a variable based on its value
37 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Nom
el 7 de Mayo de 2020
Comentada: Star Strider
el 7 de Mayo de 2020
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 comentarios
Respuesta aceptada
Star Strider
el 7 de Mayo de 2020
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 comentarios
Star Strider
el 7 de Mayo de 2020
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.
Más respuestas (0)
Ver también
Categorías
Más información sobre Creating and Concatenating Matrices en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!