Extract data above threshold from groups
    3 views (last 30 days)
  
       Show older comments
    
I'm trying to extract the y-data that fall into groups (bins) on the x -axis. Ideally, I want to set any y-values that are below the 90th percentile whitin a group to NaN (i.e. I want the end result to be a 6113x1 vector). I have started the following code to bin into groups , but now I am stuck. 
load('xydata.mat') %
edges = (min(pp):20:max(pp));
[N, edges, bin] = histcounts(pp, edges);
figure
gscatter(pp,cc,bin)
0 Comments
Accepted Answer
  Chunru
      
      
 on 5 May 2022
        load('xydata.mat') 
edges = (min(pp):20:max(pp));
[N, edges, bin] = histcounts(pp, edges);
figure
gscatter(pp,cc,bin)
%whos
y= pp;
ugroups = unique(bin);
for i=1:length(ugroups)
    idx = bin == ugroups(i);    % data index for the group
    if ugroups(i) == 0          % not assigned to any group
        y(idx) = nan;
    else
        ybin = y(idx);
        pct = prctile(ybin, 90);  % 90 percentile
        ybin(ybin>pct) = nan;
        y(idx) = ybin;
    end
end
[N1, edges, bin] = histcounts(y, edges);
figure
gscatter(pp,cc,bin)
% whos
figure
plot(1:32, N, 'r', 1:32, N1, 'b')
sum(N)
sum(N1)
More Answers (0)
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

