How do I plot complex numbers or moduli?

1 次查看(过去 30 天)
Sean
Sean 2017-6-25
评论: KSSV 2017-6-25
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

回答(1 个)

KSSV
KSSV 2017-6-25
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 个评论
Sean
Sean 2017-6-25
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 2017-6-25
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*');

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Mathematics 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by