Create a legend for complex numbers plot

Hi,
I am plotting m by n matrices of complex numbers using
figure;
plot(poles_sys_a, 'kx'); hold on;
plot(poles_sys_b, 'ro'); hold off;
How can I insert a legend into that plot, that correctly labels the two sets?
legend('poles of sys_a','poles of sys_b');
doesn't work.
For example try
poles_sys_a = rand(3,10) + i*rand(3,10);
poles_sys_b = rand(3,1) + i*rand(3,1);
Thanks a lot.
JJ

 Accepted Answer

Your ‘poles_sys_a’ matrix is confusing the plot function. If you create the ‘poles_sys_a’ matrix to vectors (using the ‘(:)’ notation), it works correctly with the legend call:
poles_sys_a = rand(3,4) + 1i*rand(3,4);
poles_sys_b = rand(3,1) + 1i*rand(3,1);
figure;
ha = plot(real(poles_sys_a(:)), imag(poles_sys_a(:)), 'kx');
hold on
hb = plot(real(poles_sys_b), imag(poles_sys_b), 'rx');
hold off
legend('poles of sys_a','poles of sys_b');
I decreased the size of ‘poles_sys_a’ so I could be certain it plots correctly with my changes. (It does.) I also changed the red 'o' to 'x' because by convention ‘x’ indicate pole locations, and ‘o’ zero locations.

2 Comments

That worked. Thank you very much.
As always, my pleasure.

Sign in to comment.

More Answers (1)

madhan ravi
madhan ravi on 16 Nov 2018
Edited: madhan ravi on 16 Nov 2018
legend({'poles of sys_a','poles of sys_b'})

6 Comments

Nope, doesn't work. It still displays a black cross where a red circle should appear in the legend.
provide your datas to test
When I try in R2018b, I get a legend with black x and red o
I'm using R2018b. But just black crosses.
Even am using 2018b I get the same result as sir Walter
I added the example, so the question is still open.

Sign in to comment.

Asked:

JJ
on 16 Nov 2018

Commented:

on 19 Nov 2018

Community Treasure Hunt

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

Start Hunting!