analyticsClass.py 文件源码

python
阅读 23 收藏 0 点赞 0 评论 0

项目:seelab-jr 作者: jithinbp 项目源码 文件源码
def squareFit(self,xReal,yReal):
        N=len(xReal)
        mx = yReal.max()
        mn = yReal.min()
        OFFSET = (mx+mn)/2.
        amplitude = (np.average(yReal[yReal>OFFSET]) - np.average(yReal[yReal<OFFSET]) )/2.0
        yTmp = np.select([yReal<OFFSET,yReal>OFFSET],[0,2])
        bools = abs(np.diff(yTmp))>1
        edges = xReal[bools]
        levels = yTmp[bools]
        frequency = 1./(edges[2]-edges[0])

        phase=edges[0]#.5*np.pi*((yReal[0]-offset)/amplitude)
        dc=0.5
        if len(edges)>=4:
            if levels[0]==0:
                dc = (edges[1]-edges[0])/(edges[2]-edges[0])
            else:
                dc = (edges[2]-edges[1])/(edges[3]-edges[1])
                phase = edges[1]

        guess = [amplitude, frequency, phase,dc,0]

        try:
            (amplitude, frequency, phase,dc,offset), pcov = self.optimize.curve_fit(self.squareFunc, xReal, yReal-OFFSET, guess)
            offset+=OFFSET

            if(frequency<0):
                #print ('negative frq')
                return False

            freq=1e6*abs(frequency)
            amp=abs(amplitude)
            pcov[0]*=1e6
            #print (pcov)
            if(abs(pcov[-1][0])>1e-6):
                False
            return [amp, freq, phase,dc,offset]
        except:
            return False
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号