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

3 visualizaciones (últimos 30 días)
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?

Respuesta aceptada

Walter Roberson
Walter Roberson el 21 de Jul. de 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 comentarios
Bruno Luong
Bruno Luong el 21 de Jul. de 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 el 21 de Jul. de 2023
Thank you all for the feedback on pcolor. Appreciate it. :)

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Data Distribution Plots en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by