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

34 visualizaciones (últimos 30 días)
Guido
Guido el 7 de Oct. de 2014
Respondida: Marina el 31 de Ag. de 2022
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

Respuestas (3)

Star Strider
Star Strider el 7 de Oct. de 2014
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 el 7 de Oct. de 2014
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 el 31 de Ag. de 2022
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

Categorías

Más información sobre Surface and Mesh Plots en Help Center y File Exchange.

Productos

Community Treasure Hunt

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

Start Hunting!

Translated by