Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 水平线与函数的交点_Python 3.x_Math_Signal Processing - Fatal编程技术网

Python 3.x 水平线与函数的交点

Python 3.x 水平线与函数的交点,python-3.x,math,signal-processing,Python 3.x,Math,Signal Processing,我有这段代码,生成以下(图像),我将如何继续检测线与函数的交点` 可以使用以下表达式获取最接近交点的数组t的索引 idx=np.argwhere(np.diff(np.sign(y-func))).flant() 此表达式选择列表中有符号更改的索引。但是,这只是实际交点的近似值。减小t的步长以提高精度 由于方程相对简单,另一种方法是手工求解,并使用封闭式公式进行绘图 方程是y=0.4和y=sin(2*pi*t*f/Fs)。交点的值为t,因此0.4=sin(2*pi*t*f/Fs)。求解t给出

我有这段代码,生成以下(图像),我将如何继续检测线与函数的交点`


可以使用以下表达式获取最接近交点的数组
t
的索引

idx=np.argwhere(np.diff(np.sign(y-func))).flant()

此表达式选择列表中有符号更改的索引。但是,这只是实际交点的近似值。减小
t
的步长以提高精度


由于方程相对简单,另一种方法是手工求解,并使用封闭式公式进行绘图

方程是
y=0.4
y=sin(2*pi*t*f/Fs)
。交点的值为
t
,因此
0.4=sin(2*pi*t*f/Fs)
。求解
t
给出了两个答案:

t=(arcin(0.4)+2*pi*k)/(2*pi*f/Fs)

t=(pi-arcin(0.4)+2*pi*k)/(2*pi*f/Fs)


其中
k
是任意整数。简而言之,循环给定范围内的所有所需整数,并使用上述两个方程计算坐标
t
。您将获得一组点
(t,0.4)
,可以在图形上绘制。

这与找到
func(t)-y=0的解的问题完全相同。对于这里给出的函数,解是周期性的。
import numpy as np
import matplotlib.pyplot as plt

y = 0.4*np.ones(100)                
x = np.arange(0, 100)           

t = np.linspace(0,100,100)
Fs = 6000
f = 200
func = np.sin(2 * np.pi * f * t / Fs)

idx = np.where(func == y) # how i think i should do to detect intersections

print(idx)

plt.plot(x, y)        # the horizontal line
plt.plot(t,func)      # the function
plt.show()