关于蔡氏系统的混沌同步模型及高通滤波还原信号的Matlab程序
混沌同步模型:我的仿真程序:
【文件chua.m——蔡氏电路模型脚本程序】
%参数值a=9.9,b=1,c=14.4
%参数值d=-2.475,e=4.95,f=9.9,g=14.4
function dx=chua(t,x,u)
a=9;b=100/7;c=1;
k=7;
m0=-1/7;m1=2/7;
%发送器:x(1)-x(3)
%接收器:x(4)-x(6)
dx=zeros(6,1);
if x(1)>=1
fm=m1*x(1)+m0-m1;
elseif x(1)<=-1
fm=m1*x(1)-m0+m1;
else
fm=m0*x(1);
end
if x(4)>=1
fs=m1*x(4)+m0-m1;
elseif x(4)<=-1
fs=m1*x(4)-m0+m1;
else
fs=m0*x(4);
end
dx(1)=a*(x(2)-x(1)-fm)+k*u(t==t);
dx(2)=x(1)-x(2)+x(3);
dx(3)=-b*x(2)-c*x(3);
dx(4)=a*(x(5)-x(4)-fs)-k*(x(4)-x(1))+k*u(t==t);
dx(5)=x(4)-x(5)+x(6)-k*(x(5)-x(2));
dx(6)=-b*x(5)-c*x(6)-k*(x(6)-x(3));
【文件sync.m——同步程序】
clear;
lim1=0:10^(-3):30;
lim2=0:10^(-3):90;
x0=zeros(1,6);
k=7;
%明文u1(t)=cos(7t)
t=lim1;
u1=cos(7*t);
subplot(321);plot(t,u1,'r-');
ylim([-1.5,1.5]);
title('明文信号u1(t)=cos(7t)');
%明文u2(t)=(1+sin(0.2t))cos(7t)
t=lim2;
u2=(1+sin(0.2*t)).*cos(7*t);
subplot(322);plot(t,u2,'r-');
ylim([-2.5,2.5]);
title('明文信号u2(t)=(1+sin(0.2t))cos(7t)');
clear t;
%密文yT1=x1m+u1(t)
=ode45(@chua,lim1,x0,[],u1);
u1=cos(7*t1);
yT1=x1(:,1)+u1*k;
subplot(323);plot(t1,yT1,'r-');
title('密文信号yT1');
%密文yT2=x1m+u2(t)
=ode45(@chua,lim2,x0,[],u2);
u2=(1+sin(0.2*t2)).*cos(7*t2);
yT2=x2(:,1)+u2*k;
subplot(324);plot(t2,yT2,'r-');
title('密文信号yT2');
%接收器信号恢复
ys1=x1(:,4);
uu1=(yT1-ys1)/k;
subplot(325);plot(t1,uu1,'r-');
ylim([-1.5,1.5]);
title('恢复的明文信号u1(t)');
ys2=x2(:,4);
uu2=(yT2-ys2)/k;
subplot(326);plot(t2,uu2,'r-');
ylim([-2.5,2.5]);
title('恢复的明文信号u2(t)');
figure;
plot(t1,x1(:,1));
hold on;
plot(t1,x1(:,4),'r-');
legend('x1m','x1s');
画出的图:
【文件mainFig.m——高通滤波程序】
clear;
lim1=0:10^(-3):30;
lim2=0:10^(-3):90;
x0=zeros(1,6);
k=7;
%明文u1(t)=cos(7t)
t=lim1;
u1=cos(7*t);
subplot(321);plot(t,u1,'r-');
ylim([-1.5,1.5]);
title('明文信号u1(t)=cos(7t)');
%明文u2(t)=(1+sin(0.2t))cos(7t)
t=lim2;
u2=(1+sin(0.2*t)).*cos(7*t);
subplot(322);plot(t,u2,'r-');
ylim([-2.5,2.5]);
title('明文信号u2(t)=(1+sin(0.2t))cos(7t)');
%密文对数功率谱
clear t;
Fs=32;%采样频率
N=8192;%采样点数
tt=(1:N)/Fs;
window=blackmanharris(N);%4-term Blackman-Harris窗
=ode45(@chua,tt,x0,[],u1);
u1=cos(7*t1);
yyT1=x1(:,1)+u1*k;%密文
noverlap=0;
range='onesided';
=pwelch(yyT1,window,noverlap,N,Fs,range);%计算功率密度
Pxx1=Pxx1/max(Pxx1);%归一化
subplot(323);plot(f,20*log10(Pxx1));
axis();
title('密文yT1对数功率谱');
=ode45(@chua,tt,x0,[],u2);
u2=(1+sin(0.2*t2)).*cos(7*t2);
yyT2=x2(:,1)+u2*k;%密文
noverlap=0;
range='onesided';
=pwelch(yyT2,window,noverlap,N,Fs,range);%计算功率密度
Pxx2=Pxx2/max(Pxx2);%归一化
subplot(324);plot(f,20*log10(Pxx2));
axis();
title('密文yT2对数功率谱');
%---------------------------------------------------------
%FIR高通滤波
Fc=1;
b=fir1(2048,2*Fc/Fs,'high');
y1=filter(b,1,yyT1);
subplot(325);plot(t1,y1);
axis();
title('高通滤波恢复明文u1(t)');
y2=filter(b,1,yyT2);
subplot(326);plot(t2,y2);
axis();
title('高通滤波恢复明文u2(t)');
画出的图:
【问题】
1.程序总体哪里出了问题,为什么仿真结果密文的图像不成混沌状倒和明文形状类似?
2.第二张图x1m和x1s图为什么前部分波动而后部分为一条直线?
3.对数功率谱的意义是什么?可以看出什么信息?
4.为什么高通滤波的结果虽然恢复了明文的函数图象,但幅值过大?
恳请各位高手指教,不甚感激!:@)
求大神啊!!很急!!
页:
[1]