如何解决python/matplotlib 是否只是在没有我提示的情况下在这里绘制复杂方程的实部?
我正在分析一些代码,有一个包含虚部和实部的方程,并且在绘制时没有任何关于虚部或实部的提示:
import numpy as np
from matplotlib import pyplot as plt
pi = np.pi
k = 2*pi*1e6
k_e = 2*pi*400e3
w_0 = 10.607e9
w_s = np.linspace(8e9,12e9)
S11_Ideal = 1 - (2*k_e)/(k + 2j*(w_s - w_0))
plt.plot(w_s,S11_Ideal)
plt.show()
plt.close()
从输出看来,真正的部分正在被绘制。这就是正在发生的事情吗?我只是想确认一下,它只是直接忽略了此处数字的虚部,还是发生了其他事情?
解决方法
我认为当你运行你的代码时它会抛出以下错误:
/usr/local/lib/python3.9/site-packages/numpy/core/_asarray.py:83: ComplexWarning: Casting complex values to real discards the imaginary part
return array(a,dtype,copy=False,order=order)
此警告来自 plot
命令。 “plot”是指将一个 1d 实数数组放在屏幕上。当它看到一组复数时,它会尽其所能,即丢弃虚部并绘制实部。
您可以分别绘制两个 components
。如果您想绘制两个部分,请参阅下面的代码以获取更多详细信息。
import numpy as np
from matplotlib import pyplot as plt
pi = np.pi
k = 2*pi*1e6
k_e = 2*pi*400e3
w_0 = 10.607e9
w_s = np.linspace(8e9,12e9)
S11_Ideal = 1 - (2*k_e)/(k + 2j*(w_s - w_0))
plt.plot(w_s,S11_Ideal.real,'b',label="real")
plt.plot(w_s,S11_Ideal.imag,'r',label="imag")
plt.grid()
plt.legend()
plt.show()
输出图像:
我建议你看看this tutorial。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。