Clear Filters
Clear Filters

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

1 view (last 30 days)
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?

Accepted Answer

Walter Roberson
Walter Roberson on 21 Jul 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 Comments
Bruno Luong
Bruno Luong on 21 Jul 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.

Sign in to comment.

More Answers (0)

Categories

Find more on Geographic Plots in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!