How to get subset of data from given thresholds?

5 views (last 30 days)
Macy on 28 Feb 2023
Commented: Macy on 28 Feb 2023
Please help, here is a snippet of code. There are three different thresholds that I have to make subsets of data for:
1)NZE > 0.25
2)NZE > 0.5, DNS < 30% of max DNS
3)NZE > 0.5, |Percent| < 20% (make sure to do absolute value)
I am not sure how to write out the last two. Because there are two boundaries, I am struggling on how to write it. If I had to guess I would do the following but I know it is not correct:
sub = dat(dat(:,10)>0.5,:)&dat(dat(:,9)<0.2*max(:;9),:);
sub = dat(dat(:,10)>0.5,:)&dat(abs(dat(:,11)<0.2,:));;
Thank you.
dat = load('something random');
dat(:,12) = 1:size(dat,1);
names = {'DNS' 'NZE' 'Percent'};
columns = [9 10 11];
for i=1:3
if(i==1) % NZE > 0.25 %}
sub = dat(dat(:,10)>0.25,:); %} This section is correct
dat_1 = sub; %}
end
if(i==2) % NZE > 0.5, DNS < 30% of max DNS
sub = %??? Not sure of how to do this
dat_2 = sub;
end
if(i==3) % NZE > 0.5, |Percent| < 20%
sub = %??? Not sure of how to do this
dat_3 = sub;
end
0 CommentsShow -2 older commentsHide -2 older comments

Sign in to comment.

Accepted Answer

Askic V on 28 Feb 2023
Edited: Askic V on 28 Feb 2023
Did you try this approach?
DNS = dat(:,9);
NZE = dat(:,10);
PER = dat(:,11);
% 1.
sub = dat(NZE>0.25,:);
%2.
sub = dat( (NZE>0.5) & (DNS<0.3* max(DNS)), : );
% 3. check percent column (is it 20% or 0.2)
sub = dat( (NZE>0.5) & (abs(PER)<20), : );
1 CommentShow -1 older commentsHide -1 older comments
Macy on 28 Feb 2023
I believe this worked, thank you!

Sign in to comment.

Categories

Find more on Get Started with MATLAB in Help Center and File Exchange

R2022b

Community Treasure Hunt

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

Start Hunting!