我想对下面显示的信号执行自相关.两个连续点之间的时间是2.5ms(或400Hz的重复率).

这是我想要使用的估计自相关的等式(取自http://en.wikipedia.org/wiki/Autocorrelation,部分估计):

在python中查找我的数据估计自相关的最简单方法是什么?有什么类似于numpy.correlate我可以使用的东西吗?
或者我应该只计算均值和方差?
编辑:
from numpy import *
import numpy as N
import pylab as P
fn = 'data.txt'
x = loadtxt(fn,unpack=True,usecols=[1])
time = loadtxt(fn,unpack=True,usecols=[0])
def estimated_autocorrelation(x):
n = len(x)
variance = x.var()
x = x-x.mean()
r = N.correlate(x, x, mode = 'full')[-n:]
#assert N.allclose(r, N.array([(x[:n-k]*x[-(n-k):]).sum() for k in range(n)]))
result = r/(variance*(N.arange(n, 0, -1)))
return result
P.plot(time,estimated_autocorrelation(x))
P.xlabel('time (s)')
P.ylabel('autocorrelation')
P.show()
Run Code Online (Sandbox Code Playgroud) 产生100个数字阵列的最有效方法是什么,形成下面的三角波形状,最大/最小振幅为0.5?
记住三角波形:

模型四.
方法:执行积分,作为E的函数,为每个使用的电压值输出电流.对于v_values数组重复此操作.该等式可以在下面找到.

尽管该等式中的极限范围-inf为0 inf,但是必须限制极限以使(E + eV)^ 2- \Δ^ 2> 0和E ^ 2- \Δ^ 2> 0,以避免极点.(\ Delta_1 =\Delta_2).因此,目前有两个积分,从限制-inf到-gap-e*v 和gap到inf.
但是,我一直回来,math range error虽然我相信我已经通过使用上述限制排除了麻烦的E值.错误的偏见:http://pastie.org/private/o3ugxtxai8zbktyxtxuvg
对这个问题的模糊性表示歉意.但是,任何人都可以看到明显的错误或代码滥用吗?
我的尝试:
from scipy import integrate
from numpy import *
import scipy as sp
import pylab as pl
import numpy as np
import math
e = 1.60217646*10**(-19)
r = 3000
gap = 400*10**(-6)*e
g = (gap)**2
t = 0.02
k = 1.3806503*10**(-23)
kt = …Run Code Online (Sandbox Code Playgroud) 我试图用Python重现这个Mathematica程序:

它找到了数值积分的根,并形成了这些值的图.但是,我不能让我试图跑.
目前的尝试:
来自scipy.integrate import quad from scipy import integration from scipy.optimize import fsolve import pylab as pl import numpy as np
# Variables.
boltzmann_const = 1.38e-23
planck_const = 6.62e-34
hbar = planck_const / ( 2 * np.pi )
transition_temp = 9.2
gap_energy_at_zero_kelvin = 3.528 / ( 2 * transition_temp * boltzmann_const )
debye_freq = ( 296 * boltzmann_const ) / hbar
# For subtracting from root_of_integral
a_const = np.log( ( 1.13 * hbar * debye_freq ) / ( boltzmann_const …Run Code Online (Sandbox Code Playgroud) 我想对xy数据执行绘图/拟合,前提是数据集的x值满足条件(即大于10).
我的尝试:
x_values, y_values = loadtxt(fname, unpack=True, usecols=[1, 0])
for x in x_values:
if x > 10:
(m,b)=polyfit(x_values,y_values,1)
yp = polyval([m,b],x_values)
plot(x_values,yp)
scatter(x_values,y_values)
else:
pass
Run Code Online (Sandbox Code Playgroud)
也许最好删除不满足x值条件的行的xy条目,然后绘制/拟合?
我从实验中获得了两个数据阵列; x(时间)和y(电压).这些绘制如下.每隔200微秒,信号就是三种状态之一:
我想'数字化'这个信号,所以情况1.,2.和3.,对应于-1,+ 1或0的离散值.
如何通过分析数据数组来做到最好?
我目前的想法:
np.interp(0.5,x,y)
问题:
我正在尝试编写一个执行以下操作的程序:
这个方程看起来很糟糕,但除了 V 之外,一切都是常数。这是方程。这个方程并不是很重要。
我应该如何解决这个问题?我的尝试(如下所示)不会计算从文件中读取的每个 V 值的积分。
from scipy import integrate #integrate.quad
from numpy import *
import pylab
import datetime
import time
import os
import math
# import V
fn = 'cooltemp.dat'
V = loadtxt(fn,unpack=True,usecols=[1])
# variables
del1, del2, R, E, fE, fEeV = 1,2,1,2,1,1
e = 1.602176565*10**-19
# eqn = dint(abc)
a = E/( math.sqrt( E**2 - del1**2 ) )
b = ( …Run Code Online (Sandbox Code Playgroud) 我想编写一个程序,在循环中解决下面的定积分,该循环考虑每次迭代的常数c的不同值.
然后我想将积分的每个解决方案输出到一个新的数组中.
我如何在python中最好地编写这个程序?

限制在0和1之间.
from scipy import integrate
integrate.quad
这里可以接受.我的主要斗争是构建该计划.
这是一次旧尝试(失败了)
# import c
fn = 'cooltemp.dat'
c = loadtxt(fn,unpack=True,usecols=[1])
I=[]
for n in range(len(c)):
# equation
eqn = 2*x*c[n]
# integrate
result,error = integrate.quad(lambda x: eqn,0,1)
I.append(result)
I = array(I)
Run Code Online (Sandbox Code Playgroud) 为这个问题的简单而道歉.
我想在Python中实现一个方程式.在该等式中,K_0是零阶修正贝塞尔函数.
在Python中实现K_0的最佳方法是什么?