Why do two functions in my plot "switch" positions when plotted?

조회 수: 1 (최근 30일)
Donald
Donald 2015년 9월 25일
편집: Walter Roberson 2015년 9월 25일
Here is my code:
clear
clc
m1 = 1;
m2 = 2;
m3 = 1;
k1 = 2000:8000;
k2 = 2000;
k3 = 6000;
M = [ m1 0 0; 0 m2 0; 0 0 m3]
for n = 1:length(k1);
K = [k1(n)+k2 -k2 0; -k2 k2+k3+3 -k3; 0 -k3 k3];
EV = eig(-inv(M)*K);
w1(n) = sqrt(abs(EV(1)));
w2(n) = sqrt(abs(EV(2)));
w3(n) = sqrt(abs(EV(3)));
end
figure(1)
plot(k1,w1/(2*pi),k1,w2/(2*pi),k1,w3/(2*pi))
legend w1 w2 w3
title('Varying k1')
ylabel('Frequency (Hz)')
xlabel('k1')
my plot looks like the picture attached. I cannot figure out why w2 and w3 seem to jump to one another after about 7000.
How can I resolve this?

채택된 답변

Steven Lord
Steven Lord 2015년 9월 25일
EIG doesn't guarantee it always returns the eigenvalues in any particular order. If you want them to always be returned in increasing order or always in decreasing order, SORT them.
  댓글 수: 1
Donald
Donald 2015년 9월 25일
I'm not too familiar with using the EIG function, after going back and using the sort function to obtain the correct corresponding eigenvalues, the plot was fixed.
Thank you!

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Line Plots에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by