필터 지우기
필터 지우기

using find function and stor the filtered data in a Matrix

조회 수: 3 (최근 30일)
Tharindu
Tharindu 2023년 2월 22일
댓글: Tharindu 2023년 2월 24일
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]

채택된 답변

Dyuman Joshi
Dyuman Joshi 2023년 2월 23일
편집: Dyuman Joshi 2023년 2월 24일
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
Dyuman Joshi
Dyuman Joshi 2023년 2월 24일
Thanks for pointing it out, Voss. I have edited my code to rectify the mistake.
Tharindu
Tharindu 2023년 2월 24일
Thanks Joshi and Voss! I figured out the logic behind. Great help. Thanks to both of you!!

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by