看了马同学的这篇关于傅里叶变换的文章,如何理解傅里叶变换公式?,但是对于其中函数向量的部分不是很懂,想了很久,终于明白了,将过程记录下来。在记录过程中,将马同学的文章也重新编辑了一下,对其中的某些部分进行了解释。

1 对周期函数进行分解的猜想

拉格朗日等数学家发现某些周期函数可以由三角函数的和来表示,比如下图中,黑色的斜线是周期为2π2\pi2π的函数,而红色的曲线是三角函数之和,可以看出两者确实近似:

而另外一位数学家:傅里叶男爵猜想任一周期函数可以写成三角函数之和

2 分解的思路

假设f(x)f(x)f(x)是周期为TTT的函数,傅里叶男爵会怎么构造三角函数的和,使之等于f(x)f(x)f(x)呢?

2.1 常数项

对于y=C,C∈Ry=C, C\in Ry=C,C∈R这样的常数函数:

根据常数项的定义,常数函数是周期函数,周期为任意实数。
所以分解里面应该有一个常数项。

2.2 通过sin(x),cos(x)sin(x), cos(x)sin(x),cos(x)进行分解

首先,sin(x),cos(x)sin(x), cos(x)sin(x),cos(x)是周期函数,进行合理的加减组合,结果可以是周期函数,其次,它们的微积分都很简单。
然后,sin(x)sin(x)sin(x)是奇函数,即:
sin(x)=−sin(−x)sin(x)=-sin(-x)sin(x)=−sin(−x)
从图像上也可以看出,sin(x)sin(x)sin(x)关于原点对称,是奇函数:

而奇函数和奇函数加减只可以得到奇函数,即:
fodd±fodd=foddf_{odd} \pm f_{odd}=f_{odd}fodd​±fodd​=fodd​
其中,foddf_{odd}fodd​为奇函数。
而cons(x)cons(x)cons(x)为偶函数,即:
cos(x)=cos(−x)cos(x)=cos(-x)cos(x)=cos(−x)
从图像上也可以看出,cos(x)cos(x)cos(x)关于YYY轴对称

同样的,偶函数与偶函数加减只能得到偶函数,即:
feven±feven=fevenf_{even} \pm f_{even}=f_{even}feven​±feven​=feven​
其中,fevenf_{even}feven​表示偶函数。
但是任意函数可以分解为奇函数和偶函数之和:
f(x)=f(x)+f(−x)2±f(x)−f(−x)2=fodd±fevenf(x)=\frac{f(x)+f(-x)}{2} \pm \frac{f(x)-f(-x)}{2}=f_{odd}\pm f_{even}f(x)=2f(x)+f(−x)​±2f(x)−f(−x)​=fodd​±feven​
所以同时需要sin(x)sin(x)sin(x)和cos(x)cos(x)cos(x)

2.3 保证组合出来的周期为TTT

之前说了,f(x)f(x)f(x)是周期为TTT的函数,我们怎么保证组合出来的函数依然为TTT呢?
比如下面这个周期为2π2\pi2π的函数:

很显然,sin(x)sin(x)sin(x)的周期也是2π2\pi2π

sin(2x)sin(2x)sin(2x)的周期也是2π2\pi2π,虽然最小周期是π\piπ

很显然,sin(nx),n∈Nsin(nx),n\in \Bbb Nsin(nx),n∈N的周期都是2π2\pi2π:

更一般的,如果f(x)f(x)f(x)的周期为TTT,那么:
sin(2πnTx),cos(2πnTx),n∈Nsin(\frac{2\pi n}{T}x), cos(\frac{2\pi n}{T}x), n\in \Bbb Nsin(T2πn​x),cos(T2πn​x),n∈N
这些函数的周期都为TTT。
将这些函数进行加减,就保证了得到的函数的周期也是TTT

2.4 调整振幅

现在有一堆周期为2π2\pi2π的函数了,比如说sin(x),sin(2x),sin(3x),sin(4x),sin(5x)sin(x),sin(2x),sin(3x),sin(4x),sin(5x)sin(x),sin(2x),sin(3x),sin(4x),sin(5x)

通过调整振幅可以让它们慢慢接近目标函数,比如sin(x)sin(x)sin(x)看起来处处都比目标低一些

把它的振幅增加一倍:

2sin(x)2sin(x)2sin(x)有的地方超出去了,从周期为2π2\pi2π的函数中选择一个,减去一点:

调整振幅,加加减减,我们可以慢慢接近目标函数:

2.5 小结

综上,构造出来的三角函数之和大概类似于下面的样子:
f(x)=C+∑n=1∞(ancos(2πnTx)+bnsin(2πnTx)),n∈Nf(x)=C+\sum_{n=1}^{\infty}(a_n cos(\frac{2\pi n}{T}x)+b_n sin(\frac{2\pi n}{T}x)), n \in \Bbb Nf(x)=C+n=1∑∞​(an​cos(T2πn​x)+bn​sin(T2πn​x)),n∈N
这样就符合之前的分析:

  • 有常数项
  • 奇函数和偶函数可以组合出任意函数
  • 周期为TTT
  • 调整振幅,逼近原函数
    之前的分析还比较,后面开始有单难度,即,怎么确定这三个系数:
    C,an,bnC, a_n, b_nC,an​,bn​
    说是3个系数,其实是很多系数,因为n∈Nn \in \Bbb Nn∈N
    贴一张动图,感受一下

3 sin(x)sin(x)sin(x)和cos(x)cos(x)cos(x)的另外一种表示方法

直接不好确定,要迂回一下,先稍微介绍一下什么是eiωte^{i\omega t}eiωt?

3.1 eiωte^{i\omega t}eiωt

看到复数也不要怕,可以参加马同学另一篇关于复数的文章"如何通俗易懂的解释欧拉公式",看到类似于eiθe^{i\theta}eiθ这种就应该想到复平面上的一个夹角为θ\thetaθ的向量:

那么当θ\thetaθ不再是常数,二是代表时间变量的ttt的时候:
eiθ→eiωte^{i\theta} \to e^{i\omega t}eiθ→eiωt
其中,ω\omegaω为角速度,ttt为时间
随着时间ttt的流逝,从0开始增长,这个向量就会旋转起来,2πω\frac{2\pi}{\omega}ω2π​秒就会旋转一圈,即T=2πωT=\frac{2\pi}{\omega}T=ω2π​:

3.2 通过eiωte^{i\omega t}eiωt表示sin(t),cos(t)sin(t), cos(t)sin(t),cos(t)

根据欧拉公式,有:
eit=cos(t)+i⋅sin(t)e^{it}=cos(t)+i \cdot sin(t)eit=cos(t)+i⋅sin(t)
所以,在时间ttt轴上,把eite^{it}eit向量的虚部也就是(纵坐标)记录下来,得到的就是sin(t)sin(t)sin(t):

代数上用ImImIm表示虚部:
sin(t)=Im(eit)sin(t)=Im(e^{it})sin(t)=Im(eit)
在时间ttt轴上,把ei2te^{i2t}ei2t向量的需不记录下来,得到的就是sin(2t)sin(2t)sin(2t)
如果在时间ttt轴上,把eite^{it}eit的实部(横坐标)记录下来,得到的就是cos(t)cos(t)cos(t)的曲线:
-
代数上用ReReRe表示实部:
cos(t)=Re(eit)cos(t)=Re(e^{it})cos(t)=Re(eit)
在eiωte^{i\omega t}eiωt的图像中,可以观察到旋转的频率,所以称为频域;而在sin(t)sin(t)sin(t)中,可以看到流逝的时间,所以称为时域:

4通过频域来求系数

4.1 函数是线性组合

假设有这么个函数:
g(t)=sin(t)+sin(2t)g(t)=sin(t)+sin(2t)g(t)=sin(t)+sin(2t)
是一个T=2πT=2\piT=2π的函数:

如果转到频域去,那么它们是下面这个复数函数的虚部:
g(t)=Im(eit+ei2t)g(t)=Im(e^{it}+e^{i2t})g(t)=Im(eit+ei2t)
先看看eiθ+ei2θe^{i\theta}+e^{i2\theta}eiθ+ei2θ,其中,θ\thetaθ是常数,很显然这是两个向量之和:

现在让他们动起来,把θ\thetaθ变成流逝的时间ttt,那么就变成了选装的向量和:

很显然,如果把虚部记录下来,就得到g(t)g(t)g(t)

4.2 函数向量

前面画了一大堆图,就想说明一个观点,eiωte^{i\omega t}eiωt是向量,并且是旋转向量。
而根据欧拉公式,有
eiωt=cos(ωt)+i⋅sin(ωt)e^{i\omega t}=cos(\omega t)+i\cdot sin(\omega t)eiωt=cos(ωt)+i⋅sin(ωt)
从图像上看:

所以sin(ωt),cos(ωt)sin(\omega t),cos(\omega t)sin(ωt),cos(ωt)也是向量。
eiωt,sin(ωt),cos(ωt)e^{i\omega t},sin(\omega t),cos(\omega t)eiωt,sin(ωt),cos(ωt)称之为函数向量,并且函数向量的点积是这么定义的:
f(x)⋅g(x)=∫0Tf(x)g(x)dxf(x)\cdot g(x)=\int_{0}^{T}f(x)g(x)d_xf(x)⋅g(x)=∫0T​f(x)g(x)dx​,其中,f(x),g(x)f(x),g(x)f(x),g(x)是函数向量,TTT是f(x),g(x)f(x),g(x)f(x),g(x)的周期。
关于函数向量,关于函数向量的点积,更严格的讨论可以参考无限维的希尔伯特空间

4.3 g(t)g(t)g(t)是线性组合

虽然比较仓促,但是让我们先接受sin(t),sin(2t)sin(t),sin(2t)sin(t),sin(2t)是函数向量,那么它们的线性组合得到的也是函数向量:
g(t)=sin(t)+sin(2t)g(t)=sin(t)+sin(2t)g(t)=sin(t)+sin(2t)
根据刚才的点积的定义有:
sin(t)⋅sin(2t)=∫02πsin(t)sin(2t)dt=0sin(t)\cdot sin(2t)=\int_{0}^{2\pi}sin(t)sin(2t)d_t=0sin(t)⋅sin(2t)=∫02π​sin(t)sin(2t)dt​=0
sin(t)⋅sin(2t)=0sin(t)\cdot sin(2t)=0sin(t)⋅sin(2t)=0说明这两个函数向量正交,线性无关,是正交基,如果写成这样:
g(t)=1⋅sin(t)+1⋅sin(2t)g(t)=1\cdot sin(t)+1\cdot sin(2t)g(t)=1⋅sin(t)+1⋅sin(2t)
可以理解为g(t)g(t)g(t)在正交基sint(t),sin(2t)sint(t),sin(2t)sint(t),sin(2t)下的坐标为(1,1)

关于这部分的理解,总感觉不是很易懂,下面讲一下我的理解
对于函数g(t)=sin(t)+sin(2t),t∈Ng(t)=sin(t)+sin(2t), t\in \Bbb Ng(t)=sin(t)+sin(2t),t∈N
可以换种写法
g(t0)=sin(t0)+sin(2t0)g(t_0)=sin(t_0)+sin(2t_0)g(t0​)=sin(t0​)+sin(2t0​)
g(t1)=sin(t1)+sin(2t1)g(t_1)=sin(t_1)+sin(2t_1)g(t1​)=sin(t1​)+sin(2t1​)
g(t2)=sin(t2)+sin(2t2)g(t_2)=sin(t_2)+sin(2t_2)g(t2​)=sin(t2​)+sin(2t2​)
g(t3)=sin(t3)+sin(2t3)g(t_3)=sin(t_3)+sin(2t_3)g(t3​)=sin(t3​)+sin(2t3​)
g(t4)=sin(t4)+sin(2t4)g(t_4)=sin(t_4)+sin(2t_4)g(t4​)=sin(t4​)+sin(2t4​)
因为t∈Nt \in \Bbb Nt∈N,所以只是举了几个简单的例子。
[g(t0)g(t1)g(t2)g(t3)g(t4)]=[sint(0)sin(t1)sin(t2)sin(t3)sin(t4)]+[sin(2t0)sin(2t1)sin(2t2)sin(2t3)sin(2t4)]\begin{bmatrix}g(t_0) \\ g(t_1)\\g(t_2)\\g(t_3)\\g(t_4)\end{bmatrix} =\begin{bmatrix}sint(_0)\\sin(t_1)\\sin(t_2)\\sin(t_3)\\sin(t_4) \end{bmatrix}+\begin{bmatrix}sin(2t_0)\\sin(2t_1)\\sin(2t_2)\\sin(2t_3)\\sin(2t_4) \end{bmatrix} ⎣⎡​g(t0​)g(t1​)g(t2​)g(t3​)g(t4​)​⎦⎤​=⎣⎡​sint(0​)sin(t1​)sin(t2​)sin(t3​)sin(t4​)​⎦⎤​+⎣⎡​sin(2t0​)sin(2t1​)sin(2t2​)sin(2t3​)sin(2t4​)​⎦⎤​
ttt是连续的,所以上式中的向量应该是有无限多个,这里只列举了几个离散的
由此可以看出g(t),sin(t),sin(2t)g(t),sin(t),sin(2t)g(t),sin(t),sin(2t)都可以看出函数向量,并且sin(t),sin(2t)sin(t),sin(2t)sin(t),sin(2t)正交

4.4 如何在正交基坐标系下的坐标

我们先来看个例子,假设w→=2u→+3v→\overrightarrow{w}=2\overrightarrow{u}+3\overrightarrow{v}w=2u+3v
其中u→=[−11]\overrightarrow{u}= \begin{bmatrix}-1\\ 1 \end{bmatrix} u=[−11​]
v→=[11]\overrightarrow{v}= \begin{bmatrix}1\\ 1 \end{bmatrix} v=[11​]
通过点积:
u→⋅v→=0\overrightarrow{u}\cdot \overrightarrow{v} =0u⋅v=0可以知道,u→\overrightarrow{u}u和v→\overrightarrow{v}v相互垂直

w→\overrightarrow{w}w在笛卡尔坐标系中的坐标为(2,3)(2,3)(2,3),其中在正交基u→\overrightarrow{u}u和v→\overrightarrow{v}v下的坐标可以通过以下方法来求得:
w→⋅u→u→⋅u→=(1,5)⋅(−1,1)(−1,1)(−1,1)=2\frac{\overrightarrow{w} \cdot \overrightarrow{u}}{\overrightarrow{u} \cdot \overrightarrow{u}}=\frac{(1,5)\cdot(-1, 1)}{(-1, 1)(-1,1)}=2u⋅uw⋅u​=(−1,1)(−1,1)(1,5)⋅(−1,1)​=2
这么做的原因,如下图所示,为高中学的向量知识。并且只有在正交基下才可以这么做。更好的解释可以参考李泽光老师的知乎文章复数形式傅里叶变换的物理意义中,相位究竟指的是什么?

4.5 如何求g(t)g(t)g(t)在sin(t)sin(t)sin(t)和sin(2t)sin(2t)sin(2t)这组正交基下的坐标

对于g(t)=sin(t)+sin(2t)g(t)=sin(t)+sin(2t)g(t)=sin(t)+sin(2t)
由4.4的内容可知,g(t)g(t)g(t)在sin(t)sin(t)sin(t)上的分量如下
g(t)⋅sin(t)sin(t)⋅sin(t)=∫02πg(t)⋅sin(t)dt∫02πsin2(t)dt=1\frac{g(t)\cdot sin(t)}{sin(t)\cdot sin(t)}=\frac{\int_{0}^{2\pi}g(t)\cdot sin(t)d_t}{\int_{0}^{2\pi}sin^2(t)d_t}=1sin(t)⋅sin(t)g(t)⋅sin(t)​=∫02π​sin2(t)dt​∫02π​g(t)⋅sin(t)dt​​=1
g(t)g(t)g(t)在sin(2t)sin(2t)sin(2t)上的分量如下
g(t)⋅sin(2t)sin(2t)⋅sin(2t)=∫02πg(t)⋅sin(2t)dt∫02πsin2(2t)dt=1\frac{g(t)\cdot sin(2t)}{sin(2t)\cdot sin(2t)}=\frac{\int_{0}^{2\pi}g(t)\cdot sin(2t)d_t}{\int_{0}^{2\pi}sin^2(2t)d_t}=1sin(2t)⋅sin(2t)g(t)⋅sin(2t)​=∫02π​sin2(2t)dt​∫02π​g(t)⋅sin(2t)dt​​=1
由此可得:
g(t)=sin(t)+sin(2t)g(t)=sin(t)+sin(2t)g(t)=sin(t)+sin(2t)

4.6 更一般的

对于之前的假设
f(x)=C+∑n=1∞(ancos(2πnTx)+bnsin(2πnTx)),n∈Nf(x)=C+\sum_{n=1}^{\infty}(a_n cos(\frac{2\pi n}{T}x)+b_n sin(\frac{2\pi n}{T}x)), n \in \Bbb Nf(x)=C+n=1∑∞​(an​cos(T2πn​x)+bn​sin(T2πn​x)),n∈N
可以改写为:
f(x)=C⏟基1下的坐标+∑n=1∞(an⏟对应基的坐标cos(2πnTx)+bn⏟对应基的坐标sin(2πnTx)),n∈Nf(x)=\underbrace{C}_{基1下的坐标}+\sum_{n=1}^{\infty}(\underbrace{a_n }_{对应基的坐标}cos(\frac{2\pi n}{T}x)+\underbrace{b_n }_{对应基的坐标} sin(\frac{2\pi n}{T}x)), n \in \Bbb Nf(x)=基1下的坐标C​​+n=1∑∞​(对应基的坐标an​​​cos(T2πn​x)+对应基的坐标bn​​​sin(T2πn​x)),n∈N
也就是说向量f(x)f(x)f(x)将要分解到C→,a0→,b0→,a1→,b1→⋯\overrightarrow{C},\overrightarrow{a_0},\overrightarrow{b_0},\overrightarrow{a_1},\overrightarrow{b_1}\cdotsC,a0​​,b0​​,a1​​,b1​​⋯上,因此这组正交基为1,cos(2πnTx),sin(2πnTx)){1, cos(\frac{2\pi n}{T}x),sin(\frac{2\pi n}{T}x))}1,cos(T2πn​x),sin(T2πn​x))
这组正交基有很多,而非3个
可以得到
an=∫0Tf(x)cos(2πnTx)dx∫0Tcos2(2πnTx)dx=2T∫0Tf(x)cos(2πnTx)dxa_n=\frac{\int_{0}^{T}f(x)cos(\frac{2\pi n}{T}x)dx}{\int_{0}^{T}cos^2(\frac{2\pi n}{T}x)dx}=\frac{2}{T}\int_{0}^{T}f(x)cos(\frac{2\pi n}{T}x)dxan​=∫0T​cos2(T2πn​x)dx∫0T​f(x)cos(T2πn​x)dx​=T2​∫0T​f(x)cos(T2πn​x)dx
bn=∫0Tf(x)sin(2πnTx)dx∫0Tsin2(2πnTx)dx=2T∫0Tf(x)sin(2πnTx)dxb_n=\frac{\int_{0}^{T}f(x)sin(\frac{2\pi n}{T}x)dx}{\int_{0}^{T}sin^2(\frac{2\pi n}{T}x)dx}=\frac{2}{T}\int_{0}^{T}f(x)sin(\frac{2\pi n}{T}x)dxbn​=∫0T​sin2(T2πn​x)dx∫0T​f(x)sin(T2πn​x)dx​=T2​∫0T​f(x)sin(T2πn​x)dx
CCC也可以求出来


因此
C=a02C=\frac{a_0}{2}C=2a0​​
至此,傅里叶级数的公式推导出来了,就像教材里的那样了

4.7复数形式的傅里叶级数

这部分公式推导可以参考博客:傅里叶级数 三角形式 到 复数形式
或者百度文库的文章:傅里叶级数的复数形式
最终的形式为f(x)=∑n=−∞∞cn⋅ei2πnxTf(x)=\sum_{n=-\infty}^{\infty}c_n \cdot e^{i\frac{2\pi nx}{T}}f(x)=n=−∞∑∞​cn​⋅eiT2πnx​
其中:
cn=1T∫x0x0+Tf(x)⋅e−i2πnxTdxc_n=\frac{1}{T}\int_{x_0}^{x_0+T}f(x)\cdot e^{-i\frac{2\pi nx}{T}}dxcn​=T1​∫x0​x0​+T​f(x)⋅e−iT2πnx​dx

5傅里叶级数到傅里叶变换

里叶系列(二)傅里叶变换的推导
从傅立叶级数到傅立叶变换

傅里叶变换关于函数向量的解释相关推荐

  1. sklearn的train_test_split()各函数参数含义解释(非常全)

    sklearn的train_test_split()各函数参数含义解释(非常全) sklearn的train_test_split()各函数参数含义解释(非常全) - The-Chosen-One - ...

  2. ML之sklearn:sklearn的make_pipeline函数、RobustScaler函数、KFold函数、cross_val_score函数的代码解释、使用方法之详细攻略

    ML之sklearn:sklearn的make_pipeline函数.RobustScaler函数.KFold函数.cross_val_score函数的代码解释.使用方法之详细攻略 目录 sklear ...

  3. ML之sklearn:sklearn的RobustScaler函数、KFold函数、cross_val_score函数的代码解释、使用方法之详细攻略

    ML之sklearn:sklearn的RobustScaler函数.KFold函数.cross_val_score函数的代码解释.使用方法之详细攻略 目录 sklearn的RobustScaler函数 ...

  4. R语言melt、table、cut函数应用及解释

    ·cut():切割将x的范围划分为时间间隔,并根据其所处的时间间隔对x中的值进行编码.https://blog.csdn.net/yyykkklll123/article/details/832771 ...

  5. 阶跃函数卷积自己_ITK中的函数梳理和解释

    做视觉的都知道opencv,但它只能处理2D的图像.对于医学图像处理,那就不得不祭出ITK(Insight Segmentation and Registration Toolkit)了(python ...

  6. 傅里叶变换拉普拉斯变换的物理解释及区别

    傅里叶变换在物理学.数论.组合数学.信号处理.概率论.统计学.密码学.声学.光学.海洋学.结构动力学等领域都有着广泛的应用(例如在信号处理中,傅里叶变换的典型用途是将信号分解成幅值分量和频率分量). ...

  7. pandas中dropna函数_快速解释如何使用pandas的inplace参数

    介绍 在操作dataframe时,初学者有时甚至是更高级的数据科学家会对如何在pandas中使用inplace参数感到困惑. 更有趣的是,我看到的解释这个概念的文章或教程并不多.它似乎被假定为知识或自 ...

  8. 再生希尔伯特空间_向量、函数向量、再生核希尔伯特空间、核技巧

    参考引用:A Story of Basis and Kernel 来源:http://songcy.net/ 向量与内积 在一个 空间中,我们可以通过 个独立向量的线性组合来表示这个空间里的任意向量. ...

  9. (转)对《javascript 杂谈之哪种写法你更喜欢?》最后一种“匿名函数法”的解释...

    原文地址:http://www.cnblogs.com/hkncd/archive/2012/05/04/2482064.html 前两天看了篇不错的关于javascript写法的文章.在评论里,不少 ...

最新文章

  1. python中的模块如何学习_在python中学习队列模块(如何运行它)
  2. Mysql 安全加固
  3. php人员权限管理(RBAC)
  4. 我要阻止做java开发的男朋友去创业型公司工作吗?
  5. c++ socket 连接超时_Web性能优化之-HTTP长连接
  6. CentOS7 minimal 没有netstat命令
  7. 技术人员为什么应该参加社区活动?
  8. 内核模块编程之_初窥门径【ZT】
  9. 05-不借用第三个变量实现两个变量值互换(运算符)
  10. Hibernate-03-Hibernate的检索方式
  11. 基于SSM的租房管理系统
  12. max3232ese_max3232中文资料汇总(max3232引脚功能图_特性参数及应用电路)
  13. utc时间 单位换算_UTC时间和GMT时间 | 圈里圈外
  14. 麻省理工学院计算机工程专业排名,美国大学排名大赏之计算机工程专业
  15. 利用树莓派搭建校园网种子站
  16. Inferred type 'S' for type parameter 'S' is not within its bound
  17. 遇险哪里还有空报警?求救app告诉你,有的
  18. 用安卓手机给电脑当摄像头[DroidCam]
  19. 如何查询会议的接受率及年论文数
  20. Redis 查看端口使用情况

热门文章

  1. 神秘代码(链接至steam指南)
  2. 线性时不变系统——信号系统学习笔记
  3. IIS 支持 flv文件播放 (浏览器中可打开一flv文件)
  4. java做服务端,FLASH做客户端交互总结
  5. Flutter 数字增加动画
  6. (建议收藏)服务器宕机了不要慌,这样排查效率高
  7. python使用结巴分词(jieba)创建自己的词典/词库
  8. win10连接win7共享打印机提示无法连接到打印机
  9. 处理window11无法连接网络共享打印机
  10. python:talib 计算 OBV