Obtaining mean values contourf
6 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Hi,
I am using the contourf function to plot data inside a specific level. After this, I would like to evaluate the mean value at each level (not the centroid) to be then used for further analysis.
So far I am able to exctract the data inside a specific level but then I am not able to find the mean values.
Can someone help?
Thank you,
Carola
0 Kommentare
Akzeptierte Antwort
DGM
am 21 Aug. 2023
Bearbeitet: DGM
am 21 Aug. 2023
Consider the following example
% some fake data
A = reshape(1:256,16,[]);
A = A + 10*randn(size(A));
[min(A(:)) max(A(:))] % just show what the data range is
% unless levels are known explicitly
% get them from the contour plot
[~,hc] = contourf(A); hold on
% first level corresponds to data minimum
% last level rarely corresponds to data maximum
ll = hc.LevelList
% so make sure there are consistently enough boundaries to cover the data range
mx = max(A(:));
if mx > ll(end)
ll = [ll mx];
end
ll % the full level list (the region boundaries)
% get the mean value of each region
nregions = numel(ll)-1;
lvlmean = zeros(1,nregions);
for k = 1:nregions
if k < nregions
% each region in a contourf() plot
% is associated with the lower boundary of the region
mask = (A >= ll(k)) & (A < ll(k+1));
else
% make sure to include maximum values
mask = (A >= ll(k)) & (A <= ll(k+1));
end
lvlmean(k) = mean(A(mask));
end
lvlmean
... or you could choose to handle the region conditionals symmetrically if you wanted. That's up to you.
0 Kommentare
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Contour Plots finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!