How do I plot complex numbers or moduli?

1 view (last 30 days)
Sean
Sean on 25 Jun 2017
Commented: KSSV on 25 Jun 2017
Dear Readers,
I have this code. However, there might be a mixture of imaginary and real eigenvalues. I want to plot everything or, if alle eigenvalues are complex, only the moduli. How do I go about this?
eigVals = zeros(2,numel(p));
figure
for k = 1:numel(p)
A = J(c(k), p(k), R(k), c2(k), p2(k));
eigVals(:,k) = eig(A);
hold on;
plot(p(k), eigVals(:,k)', '*');
end

Answers (1)

KSSV
KSSV on 25 Jun 2017
You can check whether a value is real or complex using isreal. To get moduli or magnitude of complex number you can use abs. Read about isreal, abs. https://in.mathworks.com/help/matlab/complex-numbers.html
  2 Comments
Sean
Sean on 25 Jun 2017
Great. I adapted the code, however plotting gives the error 'Data must be a single matrix Y or a list of pairs X,Y.'
eigVals = zeros(2,numel(p));
real_ev = [ ];
imag_ev = [ ];
figure
for k = 1:numel(p)
A = J(c(k), p(k), R(k), c2(k), p2(k));
eigVals(:,k) = eig(A);
real_ev(:,k) = real(eigVals(:,k));
imag_ev(:,k) = imag(eigVals(:,k));
hold on;
plot(p(k), real_ev(:,k)', 'g*', imag_ev(:,k)', 'b*');
end
Thanks in advance
KSSV
KSSV on 25 Jun 2017
Size of p(k) and real_ev(:,k) should be same to plot. Also the plot line should be plot(p(k), real_ev(:,k)', 'g*', p(k),imag_ev(:,k)', 'b*');

Sign in to comment.

Categories

Find more on Mathematics in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!