我一直在尝试生成看起来像
这是我到目前为止:
import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit
def rayleightest(t, f):
pi = np.pi
n = 528
z = (1.0/n)*((np.sum(np.cos(2.0*pi*f*t)))**2+(np.sum(np.sin(2.0*pi*f*t)))**2)
return z
def main():
file = 'Rayleighdata.dat'
t0 = np.loadtxt(file, usecols=(0,))
t = np.array(t0)
Pmax = 90
Pmin = 1.5
fmin = 1/Pmax
fmax = 1/Pmin
t1 = 1.08
tn = 359.393
T = tn - t1
f0 = 1/T
OFAC = 2.245
fstep = f0/OFAC
M = int((fmax-fmin)/fstep)
j = 2348
fj = fmin + j*fstep
fk = np.arange(fmin, fmax, fstep)
f = np.array(fk)
list1 = list(map(rayleightest,t,f))
x = np.linspace(fmin, fmax, fstep)
plt.plot(x, list1, marker='o', linestyle='--', label='data')
plt.legend()
plt.show()
if __name__ == "__main__":
main()
现在,如果我打印 list1,我得到的只有一个数字的完整列表。这是为什么?在此之前,如果我使用 sum 而不是 np.sum,则会出现 float64 错误。我只是不知道如何调用该 rayleightest 函数并以每个频率迭代文件中的所有数字(n = 528)。
如果我只是打电话
z = rayleightest(t, f)
我只得到了第一个答案t1。
手掌心
相关分类