matlab,模态参数识别:figure中的数值与工作区中的数值不符

运行下面的程序后,figure(4)的10个点,因变量Ar都等于1,但是查看工作区发现这些值均为复数(也应该是复数),且其模和实部均不为1,那么figure(4)中Ar=1是怎么画出来的?

for x=0.001:0.001:0.010
y=fix(1000*x)
m=1
k=100
c=0.1
n=2*10^6
v=0.75*n*x^2
for w=1:1:300
ww=w/10

h(1,w)=inv(-ww^2*m+i*ww*c+k+v)
end
for w=1:1:300
ww=w/10

p(w,1)=1
for qn=1:1:2
q(w,qn)=h(1,w)*(i*ww)^qn
end
end
b=-real(p'*q)
c=real(p'*p)
d=real(q'*q)
f=real(p'*h.')
g=-real(q'*h.')
a=[c,b;b.',d]
r=[f;g]
gamma=inv(a)*r
u=[gamma(3,1) gamma(2,1) 1]
o=roots(u)
wr(1,y)=(real(o(1,1))^2+imag(o(1,1))^2)^0.5
zeta(1,y)=(-real(o(1,1)))/(real(o(1,1))^2+imag(o(1,1))^2)^0.5
ar(1,y)=h(1,100)/inv(wr(1,y)^2-100+2*i*100*wr(1,y)*zeta(1,y))
figure(1)
t=0.1:0.1:30
semilogy(t,abs(h))
hold on
end
figure(2)
t=1:1:10
plot(t,wr,'r*')
figure(3)
t=1:1:10
plot(t,zeta,'r*')
figure(4)
t=1:1:10
plot(t,abs(ar(1,y)),'r*')

图片说明图片说明

https://blog.csdn.net/sinat_20265495/article/details/77371878