1

我有单个 Hindmarsh-Rose(HR) 神经元模型如下

x' = y - a*x^3 + b*x^2 -z + I0 + I1*cos*w*t + D*Zyi(t);

y' = c - d*x^2 -y;

z' = r[s(x - x0) - z ];

其中 a,b,I1,I0,D,c,d,r,s,x0 是参数。

我想改变“w”(在 I1*cos w t 的 x' 中)并包括具有 D 强度的高斯白噪声(Zyi(t))并捕获范围 [20 到 60] 的频率灵敏度。这是随机共振的问题,其中系统依赖于频率,并且在特定频率下存在可以通过 SNR 捕获的相干性(在这种情况下为 40)。

最初,当系统是确定性的(无噪声项,即 Zyi(t))时,我只是简单地使用 ODE45 来求解系统,并且它产生了正确的结果,但是当添加高斯噪声时,无法重现精确的结果,即无法捕获不同模拟中的频率灵敏度。

然后我使用 SDEToolbox 在 Matlab 中解决它。我在工具箱中使用了 Euler-Maruyama 和 Milstein 内置算法,但没有用。

function [] = sd1

a=1;
b=3;
c=1;
d=5;
s=4;
r=0.006;
x0=-1.6;
I1=0.2;
I0=1.31; %for I0=1.32 and no noise term all neurons fire.


T = 0:0.01:2000; 
xi = [0.1 0.01 0.1];  %initial conditions

zyi = 0.2 * randn; %Noise term with D=0.2

f = @(T,X)[X(2) - a*X(1)^3 + b * X(1)^2 - X(3) + I0 + (I1 * cos(40 * T)) + zyi;c - d*X(1)^2 - X(2) ; r*(s*(X(1) - x0) - X(3))]; 

y = sde_euler(f,g,T,xi); % Integrate
figure;
plot(T,y(:,1));
end

这确实会产生一些结果,但对于“w”的不同值,它不会产生确切的结果。即,如果“w”小于(>20 和 <40),那么产生的尖峰数应该更少,并且 w 在 40 到 50(大约)之间没有。神经元尖峰的数量应该是最大的,对于“w”>50 和“w”<60,神经元尖峰应该再次减少。谁能告诉我如何捕捉到这一点。

4

1 回答 1

0

据我所知https://github.com/horchler/SDETools/blob/master/SDETools/sde_euler.m

函数 f 应该只描述 SDE 的确定性部分(你用 ODE 解决的问题),而 g 应该描述噪声/扩散部分。似乎您将噪声 (zyi) 放入确定性 f 中,这自然会搞砸一切。

你在哪里设置你的代码中的g?应设置为g=0.2,即g=D。

于 2015-05-27T12:41:12.530 回答