我在python中进行了第一步,找到了这个阻塞点。我试图通过搜索和测试替代方法来找到解决方案。最后,我想找到一个添加了噪声的信号的y值(即y(x)= sin(x)+ rand()其中x(y)= 10)。作为一种抽象,我锁定了零交叉。
但是总的来说,我有一个问题,就是我没有让fsolve()与np.random.rand信号一起工作。它与sin(x)一起工作,但与(注释掉的)噪音部分一起工作。我尝试形成数组并检查尺寸,种类和大小。
import scipy.optimize
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.style
matplotlib.style.use('fivethirtyeight')
x = np.linspace(0,3,100)
print(len(x))
print(type(x))
rnd = np.random.rand(100)-0.5
def g(x):
return np.sin(2*x)
def r(x):
return rnd
print(g(x))
print(type(g(x)))
print(r(x))
print(type(rnd))
plt.plot(x, g(x), zorder=1)
plt.plot(x, r(x), zorder=1)
#well working
x_int = scipy.optimize.fsolve(g, 1.0)
y_int = g(x_int)
#not working -> ValueError: The array returned by a function changed size between calls
#x_int = scipy.optimize.fsolve(r, 1.0)
#y_int = r(x_int)
plt.scatter(x_int, y_int, marker='x', s=100, zorder=2, linewidth=1, color='black')
plt.xlim([0,3])
plt.ylim([-4,2])
plt.show()
屏幕截图