How to plot the maximum regions given several functions in a 2D plot?

10 vues (au cours des 30 derniers jours)
EllaD
EllaD le 21 Juil 2023
Commenté : EllaD le 21 Juil 2023
I have three functions A(i,j), B(i,j), and C(i,j) which are functions of i and j , where a<i<b and a<j<b.
I want to distinguish and plot regions where each of these functions has the maximum value. Can someone please help me get started?

Réponse acceptée

Walter Roberson
Walter Roberson le 21 Juil 2023
idx = max(cat(3, A, B, C), [], 3);
cmap = [.3 0 0; %light red
0 .5 0; %light green
0 0 .8]; %blue
pcolor(idx); colormap(cmap)
xlabel('i'); ylabel('j')
fake(1) = plot(nan, nan, 'DisplayName', 'A', 'Color', cmap(1));
fake(2) = plot(nan, nan, 'DisplayName', 'B', 'Color', cmap(2));
fake(3) = plot(nan, nan, 'DisplayName', 'C', 'Color', cmap(3));
legend(fake)
  10 commentaires
Bruno Luong
Bruno Luong le 21 Juil 2023
It is still not clear to me how pcolor graphical result has 3 colors, and not more as I assume it takes the average.
A=rand(5);
B=rand(5);
C=rand(5);
[~,idx] = max(cat(3, A, B, C), [], 3)
idx = 5×5
3 2 3 2 1 2 3 2 1 1 2 3 3 1 3 1 2 3 1 1 1 1 2 3 2
idx3 = cat(3,idx(1:end-1,1:end-1), ...
idx(1:end-1,2:end), ...
idx(2:end,2:end), ...
idx(2:end,1:end-1));
mean(idx3,3)
ans = 4×4
2.5000 2.5000 2.0000 1.2500 2.5000 2.7500 1.7500 1.5000 2.0000 2.7500 2.0000 1.5000 1.2500 2.0000 2.2500 1.7500
min(idx3,[],3)
ans = 4×4
2 2 1 1 2 2 1 1 1 2 1 1 1 1 1 1
max(idx3,[],3)
ans = 4×4
3 3 3 2 3 3 3 3 3 3 3 3 2 3 3 3
pcolor(idx);
It must have some odd algorithm to decide the color.
But never mind I rarely (never) use pcolor.
EllaD
EllaD le 21 Juil 2023
Thank you all for the feedback on pcolor. Appreciate it. :)

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Data Distribution Plots 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