|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
下面是我修改别人的随机共振系统的Matlab代码,供大家讨论,本人也是初步学习,有关随机共振的详细内容,希望和大家一起学习,共同进步^_^
主程序:
clear all
clc
fs=5; %参样频率
f=0.01; %信号频率
Ts=1/fs;%参样时间
h=1/fs; %时间步长
t=0:Ts:4095*Ts;
D=0.6; %噪声强度
%双稳态系统参数
a=1;
b=1;
s=0.3*sin(2*pi*0.01*t); %信号
x1=s+sqrt(2*D)*randn(size(t)); %噪声
%输入无噪信号傅立叶变换
y=fft(s,4096);
pyy=y.*conj(y)/4096;
ff=fs*(0:2048)/4096;
figure(1);
subplot(2,1,1);plot(t,s);
title('输入无噪信号');xlabel('时间t/s');ylim([-0.5,0.5]);ylabel('信号幅度A');
subplot(2,1,2);plot(ff,pyy(1:2049));
xlabel('频率f/Hz');ylabel('频谱幅度');xlim([0,0.05]);title('输入无噪信号的频谱');
%输入加噪信号傅立叶变换
y=fft(x1,4096);
pyy=y.*conj(y)/4096;
ff=fs*(0:2048)/4096;
figure(2)
subplot(2,1,1);plot(t,x1);
title('输入加噪噪信号');xlabel('时间t/s');ylabel('信号幅度A');
subplot(2,1,2);plot(ff,pyy(1:2049));
xlabel('频率f/Hz');ylabel('频谱幅度');xlim([0,0.05]);ylim([0,1500]);title('输入加噪信号的频谱');
%四阶龙格库塔法对双稳态输出信号求解
x=sr(a,b,h,x1);
%输出信号求傅立叶变换
y=fft(x,4096);
py=y.*conj(y)/4096;
ff=fs*(0:2048)/4096;
figure(3);
subplot(2,1,1);plot(t,x);
title('输出信号');xlabel('时间t/s');ylabel('信号幅度A');
subplot(2,1,2);plot(ff,py(1:2049));
xlabel('频率f/Hz');ylabel('频谱幅度');xlim([0,0.05]);ylim([0,1500]);title('输出信号的频谱');
子程序:解四阶龙格库塔法
function x=sr(a,b,h,x1)
x=zeros(1,length(x1));
for i=1:length(x1)-1
k1=h*(a*x(i)-b*x(i).^3+x1(i));
k2=h*(a*(x(i)+k1/2)-b*(x(i)+k1/2).^3+x1(i));
k3=h*(a*(x(i)+k2/2)-b*(x(i)+k2/2).^3+x1(i+1));
k4=h*(a*(x(i)+k3)-b*(x(i)+k3).^3+x1(i+1));
x(i+1)=x(i)+(1/6)*(k1+2*k2+2*k3+k4);
end |
评分
-
1
查看全部评分
-
|