コード例 #1
0
ファイル: phSVD.py プロジェクト: vimaier/Beta-Beat.src
def wrtUSV(filename,BB,ss,nm=20):
    fV=open(filename+'_V'+pl,'w');fF=open(filename+'_F'+pl,'w')
    fS=open(filename+'_S'+pl,'w');fU=open(filename+'_U'+pl,'w')
    fS.write('* INDEX   S\n$ %le %le\n')
    BB=(BB-average(BB,0))/sqrt(len(BB))
    U,S,V = svd(BB,full_matrices=0)
    if nm>len(V): nm=len(V); print '# of modes =',nm
    F=abs(fftt(U,axis=0));F0=arange(len(F))/1.0/len(F)
    fV.write('*  S  ');fF.write('*  INDEX  ');
    for j in range(1,nm+1): fV.write('MOD_'+str(j)+'  ')
    for j in range(1,nm+1): fF.write('MOD_'+str(j)+'  ')
    fV.write('\n$   %le   ');fF.write('\n$   %le   ')
    for j in range(1,nm+1): fV.write('%le   ')
    for j in range(1,nm+1): fF.write('%le   ')
    fV.write('\n'); fF.write('\n')
    for k in range(len(ss)):
        fV.write(str(ss[k])+' ')
        for j in range(nm):fV.write(str(V[j,k])+' ')
        fV.write('\n')
    for k in range(len(F)):
        fF.write(str(F0[k])+' ')
        for j in range(nm):fF.write(str(F[k,j])+' ')
        fF.write('\n')
    for k in range(len(U)):
        fU.write(str(k)+' ')
        for j in range(nm):fU.write(str(U[k,j])+' ')
        fU.write('\n')
    for j in range(len(S)):
        fS.write(str(j)+'   '+str(S[j])+'\n')
    fV.close();fF.close();fS.close();fU.close()
    return U,S,V,F
コード例 #2
0
def wUSV(filename,BB,ss,nm=4):
    fV=open(filename+'_V','w');fF=open(filename+'_F','w')
    fS=open(filename+'_S','w');fS.write('* INDEX   S\n$ %le %le\n')
    BB=(BB-average(BB,0))/sqrt(len(BB))
    U,S,V = svd(BB,full_matrices=0)
    if nm>len(U): nm=len(U); #print '# of modes =',nm
    F=abs(rfft(U,axis=0));F0=arange(len(F))/2.0/len(F)
    fV.write('*  S  ');fF.write('*  INDEX  ');
    for j in range(1,nm+1): fV.write('MOD_'+str(j)+'  ')
    for j in range(1,nm+1): fF.write('MOD_'+str(j)+'  ')
    fV.write('\n$   %le   ');fF.write('\n$   %le   ')
    for j in range(1,nm+1): fV.write('%le   ')
    for j in range(1,nm+1): fF.write('%le   ')
    fV.write('\n'); fF.write('\n')
    for k in range(len(ss)):
        fV.write(str(ss[k])+' ')
        for j in range(nm):fV.write(str(V[j,k])+' ')
        fV.write('\n')
    for k in range(len(F)):
        fF.write(str(F0[k])+' ')
        for j in range(nm):fF.write(str(F[k,j])+' ')
        fF.write('\n')
    for j in range(len(S)):
        fS.write(str(j)+'   '+str(S[j])+'\n')
    fV.close();fF.close();fS.close()
コード例 #3
0
ファイル: phSVD.py プロジェクト: vimaier/Beta-Beat.src
def fmodXY(BB,m1=0,m2=1,m3=2,m4=4,tol=10.0):
    BB=(BB-average(BB,0))/sqrt(len(BB))    
    U,S,V = svd(BB,full_matrices=0);F=abs(fftt(U,axis=0))
    if S[m1]/S[m2]>tol or S[m3]/S[m4]>tol:
        print "warning: singular vals are very different"
    S=take(S,[m1,m2,m3,m4]);U=take(U,[m1,m2,m3,m4],1)
    V=tp(take(V,[m1,m2,m3,m4],0));F=take(F,[m1,m2,m3,m4],1)
    return U,S,V,F
コード例 #4
0
ファイル: phSVD_181109.py プロジェクト: vimaier/Beta-Beat.src
def fmod(BB,m1=0,m2=1,m3=2,m4=3,tol=10.0):
    BB=(BB-average(BB,0))/sqrt(len(BB))    
    U,S,V = svd(BB,full_matrices=0)
    if S[m1]/S[m2]>tol:
        print "warning: singular vals are very different"
    S=take(S,[m1,m2,m3,m4]);U=take(U,[m1,m2,m3,m4],1)
    V=tp(take(V,[m1,m2,m3,m4],0))
    return U,S,V
コード例 #5
0
def fmodXY(BB,m1=0,m2=1,m3=2,m4=4,tol=10.0):
    BB=(BB-average(BB,0))/sqrt(len(BB))    
    U,S,V = svd(BB,full_matrices=0)
    if S[m1]/S[m2]>tol or S[m3]/S[m4]>tol:
        print "warning: singular vals are very different"
    S=take(S,[m1,m2,m3,m4]);U=take(U,[m1,m2,m3,m4],1)
    V=tp(take(V,[m1,m2,m3,m4],0))
    return U,S,V
コード例 #6
0
ファイル: phSVD_0.2.py プロジェクト: vimaier/Beta-Beat.src
def noiseold(BB, level=20):  # --older way w/o subtracting C.orbit
    U, S, V = svd(BB)
    S[:level] = 0.0
    Sigma = zeros_like(BB)
    n = min(BB.shape)
    Sigma[:n, :n] = diag(S)
    BN = dot(U, dot(Sigma, V))
    nrms = sqrt(sum(BN ** 2, 0) / len(BN))
    return nrms
コード例 #7
0
ファイル: phSVD_0.2.py プロジェクト: vimaier/Beta-Beat.src
def wrtUSV(filename, BB, ss, nm=20):
    fV = open(filename + "_V" + pl, "w")
    fF = open(filename + "_F" + pl, "w")
    fS = open(filename + "_S" + pl, "w")
    fU = open(filename + "_U" + pl, "w")
    fS.write("* INDEX   S\n$ %le %le\n")
    BB = (BB - average(BB, 0)) / sqrt(len(BB))
    U, S, V = svd(BB, full_matrices=0)
    if nm > len(V):
        nm = len(V)
        print "# of modes =", nm
    F = abs(fftt(U, axis=0))
    F0 = arange(len(F)) / 1.0 / len(F)
    fV.write("*  S  ")
    fF.write("*  INDEX  ")
    for j in range(1, nm + 1):
        fV.write("MOD_" + str(j) + "  ")
    for j in range(1, nm + 1):
        fF.write("MOD_" + str(j) + "  ")
    fV.write("\n$   %le   ")
    fF.write("\n$   %le   ")
    for j in range(1, nm + 1):
        fV.write("%le   ")
    for j in range(1, nm + 1):
        fF.write("%le   ")
    fV.write("\n")
    fF.write("\n")
    for k in range(len(ss)):
        fV.write(str(ss[k]) + " ")
        for j in range(nm):
            fV.write(str(V[j, k]) + " ")
        fV.write("\n")
    for k in range(len(F)):
        fF.write(str(F0[k]) + " ")
        for j in range(nm):
            fF.write(str(F[k, j]) + " ")
        fF.write("\n")
    for k in range(len(U)):
        fU.write(str(k) + " ")
        for j in range(nm):
            fU.write(str(U[k, j]) + " ")
        fU.write("\n")
    for j in range(len(S)):
        fS.write(str(j) + "   " + str(S[j]) + "\n")
    fV.close()
    fF.close()
    fS.close()
    fU.close()
    return U, S, V, F
コード例 #8
0
ファイル: phSVD.py プロジェクト: vimaier/Beta-Beat.src
def noise(BB,level=5):
    U,S,V = svd(BB);S[:level]=0.0
    Sigma=zeros_like(BB);n=min(BB.shape);Sigma[:n,:n]=diag(S)
    BN=dot(U,dot(Sigma,V))
    nrms=sqrt(sum(BN**2,0)/len(BN))
    return nrms
コード例 #9
0
def noise(BB,level=5):
    U,S,V = svd(BB);S[:level]=0.0
    Sigma=zeros_like(BB);n=min(BB.shape);Sigma[:n,:n]=diag(S)
    BN=dot(U,dot(Sigma,V))
    nrms=sqrt(sum(BN**2,0)/len(BN))
    return nrms