Graphing 3D Z-Transform in MATLAB

  • Topic: MATLAB 
  • Thread starter Thread starter enceladus_
  • Start date Start date
  • Tags Tags
    3d Matlab Z-transform
Join the discussion
Registration is free. Start your own thread to ask a follow-up.
3 replies · 7K views · last reply
enceladus_
Messages
58
Reaction score
0
Does anyone know how I might go about graphing the Z-Transform in 3D? It want it to look something like the picture below.
 
Attachments
  • 3D surface plot of the z-transform magnitude of an FIR filter over the z-plane, with a dark line tracing values along the unit circle; caption reads Figure 7.7.
    ztransform.jpg
    22.2 KB · Views: 957
Physics news on Phys.org
Are you interested in knowing how to plot in 3D, or how to calculate the z transform? Do you have access to Symbolic Math Toolbox? If so, there are some helpful functions in it for doing z transforms. I don't think core MATLAB has a function for it but there is probably something on the file exchange. This may also be relevant:

http://www.mathworks.com/help/matlab/data_analysis/filtering-data.html#bqm3i7m-5

Otherwise, the plot you're looking at probably came from using meshgrid() and surf(), then overlaying the unit circle values with a call to plot3().
 
  • Like
Likes   Reactions: 1 person
More so plotting in 3d, I've never used meshgrid or surf before. I do have access to the Symbolic Toolbox. Would I have to use BOTH meshgrid() and surf()?
 
Attachments
  • 3D surface plot of the magnitude |(z - 1)/(z + 1)| over the complex plane, with z = real part on one axis and imaginary part (j) on the other; the surface peaks sharply near z = 1 and a contour circle is drawn on the base plane.
    vh11.jpg
    30.2 KB · Views: 1,359
Last edited:
I have found this code from another site:

xmin = -2; xstep = 0.1; xmax = 2;
ymin = -2; ystep = 0.1; ymax = 2;
x = xmin : xstep : xmax;
y = ymin : ystep : ymax;
[X,Y] = meshgrid(x,y);

Z = 10*log10(abs(test(X + j*Y))); % here is the call to the function to be plotted.
Z2 = abs(X + j*Y) <=1; % Here is the mask the zeros things outside the unit circle

hold off
surf(X, Y, Z) % Draw and label the surface
colormap(cool)
xlabel('Re')
ylabel('Im')

ww=-pi:pi/25:pi;

[xn, yn, zn] = freqMove(0, ww);
hold on
plot3(xn, yn, zn)

It generates the following error:

Undefined function 'test' for input arguments of type 'double'.

Error in hmm (line 7)
Z = 10*log10(abs(test(X + j*Y))); % here is the call to the function to be plotted.
 
Attachments
  • 3D surface plot over a complex plane, Re from -2 to 2 and Im from -2 to 2, with Z axis from 0 to 15; two sharp peaks rise above a red mesh, with yellow contour lines and a green-tinted peak.
    figure2.gif
    6.5 KB · Views: 1,214
Last edited: