Borrar filtros
Borrar filtros

using find function and stor the filtered data in a Matrix

3 visualizaciones (últimos 30 días)
Tharindu
Tharindu el 22 de Feb. de 2023
Comentada: Tharindu el 24 de Feb. de 2023
Hello,
I have two columns of data. frequency and H. Now I want to find H values, which the respective frequency values belongs to predefined classess and stor them in a matrix. per say, f = (1.3; 1.4; 2.1; 2.5; 2.7; 2.8; 3.4) and H = (5;6;7;3;2;4;9). Now I want to find which H values falls in frequency classes of (1-2), (2-3), (3-4) and store them in a matrix (may be row sizes are unequal, make it equal size with rest of the elements being set to zeros). Since I have so many classes, I am hoping to do so using a for loop and find function. (expected answer is something like below with columns are representing frequency classes of (1-2), (2-3), (3-4) in order.
[5 7 9
6 3 0
0 2 0
0 4 0]

Respuesta aceptada

Dyuman Joshi
Dyuman Joshi el 23 de Feb. de 2023
Editada: Dyuman Joshi el 24 de Feb. de 2023
Assuming the ranges are [1,2), [2,3) ...
f = [1.3; 1.4; 2.1; 2.5; 2.7; 2.8; 3.4];
H = [5;6;7;3;2;4;9];
arr = floor(f);
[~,m]=mode(arr);
%pre-allocation
out = zeros(m,max(arr));
%generalised approach instead of 1:max(arr)
for k = unique(arr)'
z = arr==k;
out(1:nnz(z),k)=H(z);
end
out
out = 4×3
5 7 9 6 3 0 0 2 0 0 4 0
  3 comentarios
Dyuman Joshi
Dyuman Joshi el 24 de Feb. de 2023
Thanks for pointing it out, Voss. I have edited my code to rectify the mistake.
Tharindu
Tharindu el 24 de Feb. de 2023
Thanks Joshi and Voss! I figured out the logic behind. Great help. Thanks to both of you!!

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Loops and Conditional Statements en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by