声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1644|回复: 2

[编程技巧] duffing方程的高斯白噪声该怎么加呢

[复制链接]
发表于 2013-9-27 14:17 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x

function dy=Dyt(t,y)
dy=zeros(2,1);
    dy(1)=y(2);
    dy(2)=-muu*y(2)+a*y(1)-betaa*y(1)^3+rm+f*cos(t);
其中rm表示高斯噪声,这里简单用正态随机数表示。rm=randn(1,100)
clc;
%数据的初始化
muu=0.25;
a=1;
betaa=1;
f=0.3;
不知道怎样用ode来求解使得每运算一步使得rm序列中数依次加载到方程中?。。。谢谢了
以前看到randn(size(t)),那种做数字信号可以,对微分方程求解是不适合的。
回复
分享到:

使用道具 举报

 楼主| 发表于 2013-9-27 14:39 | 显示全部楼层
我找到一种,可以运行,就是太慢了。。
function dy=duffin(t,y,P)
wd=1;
f=1;
k=0.1;
dy(1)=y(2);
p=interp1(P(1,:),P(2,:),t);%循环步t时刻的噪声值
dy(2)=-k*y(2)+y(1)-y(1)^3+f*cos(wd*t)+p;
dy = dy ( : );

clc
clear all
%很简单的算法思想:让ode算法在迭代步的时刻读取到相应时刻点上的噪声值即可例如
t0=0:1:99;y0=[ 0 0];%时间与初值
randn('state',0)

P=[t0;rand(1,100)];%噪声
for i=1:100
[T Y]=ode45(@duffin,t0,y0,[ ],P);%在ode算法中传递参数P到子函数
%计算结果T和Y,看你自己怎么保存,因为每次for循环得到的T和Y可能点数不同。
end
 楼主| 发表于 2013-9-27 14:40 | 显示全部楼层
我找到一种,可以运行,就是太慢了。。
function dy=duffin(t,y,P)
wd=1;
f=1;
k=0.1;
dy(1)=y(2);
p=interp1(P(1,:),P(2,:),t);%循环步t时刻的噪声值
dy(2)=-k*y(2)+y(1)-y(1)^3+f*cos(wd*t)+p;
dy = dy ( : );

clc
clear all
%很简单的算法思想:让ode算法在迭代步的时刻读取到相应时刻点上的噪声值即可例如
t0=0:1:99;y0=[ 0 0];%时间与初值
randn('state',0)

P=[t0;rand(1,100)];%噪声
for i=1:100
[T Y]=ode45(@duffin,t0,y0,[ ],P);%在ode算法中传递参数P到子函数
%计算结果T和Y,看你自己怎么保存,因为每次for循环得到的T和Y可能点数不同。
end
可以运行就是速度较慢。。
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-12-24 00:55 , Processed in 0.079574 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表