张东东 发表于 2008-6-1 14:58

双稳态系统的随机共振仿真程序

求助,随机共振matlab仿真程序,只要是和本课题相关的通通可以,谢谢,有和本人有共同兴趣的可以加我QQ284997798

xiuhuwang 发表于 2009-5-12 14:38

%programshijin.m
x=-2:0.1:2;区间范围
b=1;势阱参数,决定势阱的深度与宽度
c=1;
figure(1)
subplot(2,1,1);分区作图
y=-b.*x.^2/2+c.*x.^4/4;势函数
plot(x,y);作二维图形
subplot(2,1,2);
b=3:0.1:7;给定b,c的变化区间
c=2:0.1:6;
h=moviein(40);影片动画
fori=1:40;
y=-b(i).*x.^2/2+c(i).*x.^4/4;
plot(x,y);
h(:,i)=getframe;
end
title('势函数随b,c的变化情况')坐标标注
subplot(2,1,1)
title('无信号及噪声输入时系统的势函数')
xlabel('x');
ylabel('U(x)');
subplot(2,1,2)
xlabel('x');
ylabel('U(x)');
movie(h,1);
figure(2)
b=1;给定b,c加入周期调制信号
c=1;
w=pi;
z=0;
subplot(2,1,1)信号较小时
A=2;
m=moviein(20);影片动画
=ode23('xinhao1',,,[],b,z,c,A,w);ode命令解微分方程
n=length(t);
fori=1:fix(n/2)
axis([-22-510]);
y=-b.*x.^2/2+c.*x.^4/4-A.*x.*sin(w*t(i));
plot(x,y);
holdon
uu=yy(i,2)*yy(i,2)/2-b.*yy(i,1).^2/2+c.*yy(i,1).^4/4-A.*yy(i,1).*sin(w*t(i));
uu=-b.*yy(i,1).^2/2+c.*yy(i,1).^4/4-A.*yy(i,1).*sin(w*t(i));
plot(yy(i,1),uu,'.r','markersize',10)
holdoff
m(:,i)=getframe;
end
title('加入周期信号较小,不足以翻转')
xlabel('x');
ylabel('U(x)');
v=moviein(20);
subplot(2,1,2)周期信号较大时
A=3;
=ode23('xinhao1',,,[],b,z,c,A,w);
n=length(t);
fori=1:fix(n/2)
y=-b.*x.^2/2+c.*x.^4/4-A.*x.*sin(w*t(i));
plot(x,y);
holdon
uu=yy(i,2)*yy(i,2)/2-b.*yy(i,1).^2/2+c.*yy(i,1).^4/4-A.*yy(i,1).*sin(w*t(i));
uu=-b.*yy(i,1).^2/2+c.*yy(i,1).^4/4-A.*yy(i,1).*sin(w*t(i));
plot(yy(i,1),uu,'.r','markersize',10)
holdoff
v(:,i)=getframe;
end
title('加入周期调制信号较大,可以翻转')
holdon
xlabel('x');
ylabel('U(x)');
axis([-22-510])
holdon
movie(v)
t=0:0.1:10;
n=length(t);
figure(3)加入信号同时加入随即噪声
A=2;
b=1;
m=moviein(20);
fori=1:fix(n/2)
r=2*rand(1)随即量
y=-b.*x.^2/2+c.*x.^4/4-A.*x.*sin(w*t(i))-r.*x;
plot(x,y);
holdon
=oula('f',0,5,rand(1),0.1,r);调用欧拉函数解方程
u=-b.*s(i).^2/2+c.*s(i).^4/4-A.*s.*sin(w*t(i))-r*s(i);
plot(s(i),u(i),'.r','markersize',10);
holdoff
m(:,i)=getframe;
end
title('加入随机噪声的情况,参数选取同figure(2)中未翻转时');
xlabel('x');
ylabel('U(x)');
movie(m,1)
figure(4)波形图及频谱分析
x=-2:0.1:2;
w=50*pi;
b=1;
c=1
A=1;
t=0:0.01:10;
n=length(t);
subplot(2,1,1);
fori=1:n
y(i)=b.*x(1)-c.*x(1).^3+A.*cos(w*t(i))+0.5*rand(1);
end
plot(t,y)
title('信号的波形图');
xlabel('t');
ylabel('U(x)');
subplot(2,1,2)
z=fft(y);
z(1)=[];
n=length(z);
p=10^(-5).*abs(z(1:n/2)).^2
m=1/2;
f=100*(1:n/2)/(n/2)*m;
plot(f,p)
title('信号的频谱图,w=50*pi,f=25');

%oula.m子程序:欧拉法解方程
function=oula(fun,x0,xf,y0,h,r)
n=fix((xf-x0)/h);
x(1)=x0;
y(1)=y0;
x(n)=0;
y(n)=0;
fori=1 n-1)
x(i+1)=x0+i*h;
y1=y(i)+h*feval(fun,x(i),y(i),r);调用方程
y2=y(i)+h*feval(fun,x(i+1),y1,r);
y(i+1)=(y1+y2)/2;
end

%f.m方程文件
%参数b,c,A,w为1,故省略。
functionf=f(t,x,r)
f=x-x.^3+cos(t)-r;

%odefilexinhao1.mode文件
functionydot=xinhao1(t,x,flag,b,z,c,A,w)
ydot=[b*x(1)-c*x(1)^3+A*cos(w*t)+z;...
b*x(2)-3*c*x(1)*x(1)*x(2)-A*w*sin(w*t)];

xiuhuwang 发表于 2009-5-12 14:39

回复 沙发 xiuhuwang 的帖子

不知道对你有帮助没有

duanqiao 发表于 2011-5-26 09:02

先学习一下,谢谢楼上了

loonger 发表于 2011-6-26 15:06

学习学习,不错!

振动分析 发表于 2013-7-14 15:20

很不错的程序,可是貌似我运行出错了,不知道什么原因
页: [1]
查看完整版本: 双稳态系统的随机共振仿真程序