Effacer les filtres
Effacer les filtres

using find function and stor the filtered data in a Matrix

3 vues (au cours des 30 derniers jours)
Tharindu
Tharindu le 22 Fév 2023
Commenté : Tharindu le 24 Fév 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]

Réponse acceptée

Dyuman Joshi
Dyuman Joshi le 23 Fév 2023
Modifié(e) : Dyuman Joshi le 24 Fév 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 commentaires
Dyuman Joshi
Dyuman Joshi le 24 Fév 2023
Thanks for pointing it out, Voss. I have edited my code to rectify the mistake.
Tharindu
Tharindu le 24 Fév 2023
Thanks Joshi and Voss! I figured out the logic behind. Great help. Thanks to both of you!!

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Loops and Conditional Statements dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by