Lorenz混沌基于FPGA的Lorenz混沌系统verilog实现
Posted fpga&matlab
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Lorenz混沌基于FPGA的Lorenz混沌系统verilog实现相关的知识,希望对你有一定的参考价值。
1.软件版本
matlab2021a,quartusii
2.本算法理论知识
Lorenz在1963年洛伦兹在研究大气对流现象时,发现了第一个结构简单的三维自治混沌系统,这就是著名的“蝴蝶效应”模型,其数学模型为:
当r≤1时,对所有的x,y,z都成立,等式仅在r<1,x=y=z=0和r=1,x=y,z=0时才成立。
当r>1时,系统开始出现不稳定性,当r增加至rc时,有一个亚临界的Hopf分岔。
当r>rc时,在吸引子附近相邻的轨道平均来说是以指数分离的,所以两条开始在一起非常接近的轨道很快丧失所有的相关性,呈现混沌状。
3.核心代码
% Dx=(25a+10)(y-x)
% Dy=(28-35a)x-xz+(29a-1)y
% Dz=xy-(a+8)z/3
% 当0<=a<0.8,广义Lorenz系统
% 当a=0.8,广义吕系统
% 当0.8<a<=1,广义陈系统
clear;clc
x=1.2;y=1.3;z=1.6;
%x=1 ;y=1 ;z=1 ;
dt=0.005;
a=10.0;c=28.0;b=2.666667;
figure;
for i=1:10000
newx=x+a*(y-x)*dt;
newy=y+(c*x-y-x*z)*dt;
newz=z+(x*y-b*z)*dt;
if i>1000
% plot(x,y)
% plot(x,z)
% plot(y,z)
plot3(x,y,z)
hold on
end
x=newx;y=newy;z=newz;
end
figure;
for i=1:10000
newx=x+a*(y-x)*dt;
newy=y+(c*x-y-x*z)*dt;
newz=z+(x*y-b*z)*dt;
if i>1000
plot(x,y)
% plot(x,z)
% plot(y,z)
%plot3(x,y,z)
hold on
end
x=newx;y=newy;z=newz;
end
figure;
for i=1:10000
newx=x+a*(y-x)*dt;
newy=y+(c*x-y-x*z)*dt;
newz=z+(x*y-b*z)*dt;
if i>1000
% plot(x,y)
plot(x,z)
% plot(y,z)
%plot3(x,y,z)
hold on
end
x=newx;y=newy;z=newz;
end
figure;
for i=1:10000
newx=x+a*(y-x)*dt;
newy=y+(c*x-y-x*z)*dt;
newz=z+(x*y-b*z)*dt;
if i>1000
%plot(x,y)
% plot(x,z)
plot(y,z)
%plot3(x,y,z)
hold on
end
x=newx;y=newy;z=newz;
end
4.操作步骤与仿真结论
对系统进行功能仿真:得到如下的结果:
图1 系统总体仿真结果
图2 系统总体仿真局部结果
5.参考文献
[01]洛伦兹EN.混沌的本质.刘式达等译.气象出版社,1997
[02]刘秉正.非线性动力学与混沌基础.长春:东北师范大学出版社,1994
[03]吴祥兴,陈忠.混沌学导论.上海:上海科学技术出版社,1996
[04]李小春,朱双鹤等.混沌信号产生电路的研究.空军工程大学学报,2001
A07-04
6.完整源码获得方式
方式1:微信c840893或者QQ联系博主
方式2:订阅任意一个,免费获得本博任意2份完整源码。
以上是关于Lorenz混沌基于FPGA的Lorenz混沌系统verilog实现的主要内容,如果未能解决你的问题,请参考以下文章
MATLAB教程案例87使用Euler法计算lorenz混沌系统