3 D plot of transfer function magnitude with complex axis

I am trying to plot the following transfer function's magnitude on a third(z) axis, however it contains a pole and the graph I am getting is obviously incorrect: s+1/s+2. Also i am getting the following warning, matrix is close to singular . My code is:
>> x=linspace(-10,10);
>> y=linspace(-10,10);
>> [X,Y]=meshgrid(x,y);
>> Z=abs((X+i*Y+1)/(X+i*Y+2));
Warning: Matrix is close to singular or badly scaled. Results may be inaccurate.
RCOND = 2.503334e-20.
>> surf(X,Y,Z)
>> rotate 3d on;

 Accepted Answer

You forgot to do element-wise division (using (./) instead of (/)).
This works:
x=linspace(-10,10);
y=linspace(-10,10);
[X,Y]=meshgrid(x,y);
Z=abs((X+i*Y+1)./(X+i*Y+2));
figure(1)
surfc(X, Y, Z)
grid on
xlabel('Real')
ylabel('Imaginary')
view([30 30])
I rotated the plot (using the view function) so you can see the zero as well as the pole.

2 Comments

Thanks! I was able to get the same result yesterday using sysms and fsurf. Now i can use your method for all other plots too.

Sign in to comment.

More Answers (0)

Categories

Find more on Mathematics in Help Center and File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!