How to create 3-D contour plots with filled surfaces?

조회 수: 34 (최근 30일)
Guido
Guido 2014년 10월 7일
답변: Marina 2022년 8월 31일
Hello,
is it possible to create 3-D isoline plots in Matlab as they are shown in the Application Note 733 (A Filter Primer) from Maxim?
Here are some links to the plots I’m talking about:
My problem is that I'm not able to fill the surface between the 3-D isolines. The best result I'm able to get is a plot like this:
[MATLAB]
% Transfer function
H_tf = tf(1,[2 1],'variable','p','TimeUnit','seconds');
[H_tf_Enumerator, H_tf_Denominator] = tfdata(H_tf);
% Grid
omega_Min = -1.0;
omega_Max = 1.5;
sigma_Min = -2.0;
sigma_Max = -0;
sigma_GridVector = linspace(sigma_Min,sigma_Max,40);
omega_GridVector = linspace(omega_Min,omega_Max,40);
[sigma_GridMatrix, omega_GridMatrix] = meshgrid(sigma_GridVector,omega_GridVector);
p_Grid = complex(sigma_GridMatrix,omega_GridMatrix);
% Transfer function values
Response = polyval(H_tf_Enumerator{:}, p_Grid)./polyval(H_tf_Denominator{:}, p_Grid);
Response_dB = 20*log10(abs(Response));
% 3-D plot
hfigure = figure;
view(axes('Parent',hfigure),[120 40]);
grid on;
hold on;
contour3(sigma_GridVector,omega_GridVector,Response_dB,10);
surface(sigma_GridVector,omega_GridVector,Response_dB,'EdgeColor',[0.6 0.6 0.6],'FaceColor','w');
[/MATLAB]
Is there a way to fill the regions between the isolines with a colour? There should be a function like "contour3f".
Best regards Guido

답변 (3개)

Star Strider
Star Strider 2014년 10월 7일
Comment-out your contour3 call and change your surface call to surf with a few changes:
% contour3(sigma_GridVector,omega_GridVector,Response_dB,10);
surf(sigma_GridVector,omega_GridVector,Response_dB)
Is that what you want it to look like?

Guido
Guido 2014년 10월 7일
Hello,
thank you for your reply. I get the following plot , when I perform the changes as described by you.
The difference to the plot I'd like to have is, that the color should change not at the border of the squares. The color should change at horizontal planes/isolines. For example: All points with z values between -10 and -5 should be blue, all points with z values between -5 and 0 should be green, and so on...
Best regards
Guido

Marina
Marina 2022년 8월 31일
I had the same problem and solved it like this:
hold on
contour3(sigma_GridVector,omega_GridVector,Response_dB,10);
surf(sigma_GridVector,omega_GridVector,Response_dB,'facealpha',0)
Face alpha makes the surf plot transparent.
Marina

카테고리

Help CenterFile Exchange에서 Surface and Mesh Plots에 대해 자세히 알아보기

제품

Community Treasure Hunt

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

Start Hunting!

Translated by