Graphing 3D Z-Transform in MATLAB

  • Context: MATLAB 
  • Thread starter Thread starter enceladus_
  • Start date Start date
  • Tags Tags
    3d Matlab Z-transform
Join the discussion
Ask a follow-up here, or get your own question answered by working scientists, mathematicians and engineers — people, not an autocomplete.
Real named experts · corrections over time · the nuance an AI answer skips
3 replies · 6K views
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

  • ztransform.jpg
    ztransform.jpg
    22.2 KB · Views: 945
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

  • vh11.jpg
    vh11.jpg
    30.2 KB · Views: 1,346
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

  • figure2.gif
    figure2.gif
    6.5 KB · Views: 1,202
Last edited: