Matlab function lorenzgui
function lorenzgui
%LORENZGUI Plot the orbit around the Lorenz chaotic attractor.
% This function animates the integration of the three coupled
% nonlinear differential equations that define the Lorenz Attractor,
% a chaotic system first described by Edward Lorenz of MIT.
% As the integration proceeds you will see a point moving in
% an orbit in 3-D space known as a strange attractor.
% The orbit ranges around two different critical points, or attractors.
% The orbit is bounded, but may not be periodic and or convergent.
%
% The mouse and arrow keys change the 3-D viewpoint. Uicontrols
% provide "pause", "resume", "stop", "restart", "clear", and "close".
%
% A listbox provides a choice among five values of the parameter rho.
% The first value, 28, is the most common and produces the chaotic
% behavior. The other four values values produce periodic behaviors
% of different complexities. A change in rho becomes effective only
% after a "stop" and "restart".
%
% Reference: Colin Sparrow, "The Lorenz Equations: Bifurcations,
% Chaos, and Strange Attractors", Springer-Verlag, 1982. if ~isequal(get(gcf,'name'),'Lorenz Gui') % This is first entry, just initialize the figure window. rhos = [28 99.65 100.5 160 350];
shg
clf reset
p = get(gcf,'pos');
set(gcf,'color','black','doublebuff','on','name','Lorenz Gui', ...
'menu','none','numbertitle','off', ...
'pos',[p(1) p(2)-(p(3)-p(4))/2 p(3) p(3)]) % Callback to erase comet by jiggling figure position klear = ['set(gcf,''pos'',get(gcf,''pos'')+[0 0 0 1]), drawnow,' ...
'set(gcf,''pos'',get(gcf,''pos'')-[0 0 0 1]), drawnow']; % Uicontrols paws = uicontrol('style','toggle','string','start', ...
'units','norm','pos',[.02 .02 .10 .04],'value',0, ...
'callback','lorenzgui');
stop = uicontrol('style','toggle','string','close', ...
'units','norm','pos',[.14 .02 .10 .04],'value',0, ...
'callback','cameratoolbar(''close''), close(gcf)');
clear = uicontrol('style','push','string','clear', ...
'units','norm','pos',[.26 .02 .10 .04], ...
'callback',klear);
rhostr = sprintf('%6.2f|',rhos);
rhopick = uicontrol('style','listbox','tag','rhopick', ...
'units','norm','pos',[.82 .02 .14 .14], ...
'string',rhostr(1:end-1),'userdata',rhos,'value',1); else % The differential equation is ydot = A(y)*y
% With this value of eta, A is singular.
% The eta's in A will be replaced by y(2) during the integration. rhopick = findobj('tag','rhopick');
rhos = get(rhopick,'userdata');
rho = rhos(get(rhopick,'value'));
sigma = 10;
beta = 8/3;
eta = sqrt(beta*(rho-1));
A = [ -beta 0 eta
0 -sigma sigma
-eta rho -1 ]; % The critical points are the null vectors of A.
% The initial value of y(t) is near one of the critical points. yc = [rho-1; eta; eta];
y0 = yc + [0; 0; 3]; % Integrate forever, or until the stop button is toggled. tspan = [0 Inf];
opts = odeset('reltol',1.e-6,'outputfcn',@lorenzplot,'refine',4);
ode45(@lorenzeqn, tspan, y0, opts, A); end % ------------------------------ function ydot = lorenzeqn(t,y,A)
%LORENZEQN Equation of the Lorenz chaotic attractor.
% ydot = lorenzeqn(t,y,A).
% The differential equation is written in almost linear form.
% ydot = A*y
% where
% A = [ -beta 0 y(2)
% 0 -sigma sigma
% -y(2) rho -1 ]; A(1,3) = y(2);
A(3,1) = -y(2);
ydot = A*y; % ------------------------------ function fin = lorenzplot(t,y,job,A)
%LORENZPLOT Plot the orbit of the Lorenz chaotic attractor. persistent Y if isequal(job,'init') % Initialize axis and comet, R = axis settings, L = length of comet. rho = A(3,2);
switch rho
case 28, R = [ 5 45 -20 20 -25 25]; L = 100;
case 99.65, R = [ 50 150 -35 35 -60 60]; L = 240;
case 100.5, R = [ 50 150 -35 35 -60 60]; L = 120;
case 160, R = [100 220 -40 40 -75 75]; L = 165;
case 350, R = [285 435 -55 55 -105 105]; L = 80;
otherwise, R = [100 250 -50 50 -100 100]; L = 150;
end
set(gcf,'pos',get(gcf,'pos')+[0 0 0 1])
drawnow
set(gcf,'pos',get(gcf,'pos')-[0 0 0 1])
drawnow
if get(gca,'userdata') ~= rho, delete(gca), end
set(gca,'color','black','pos',[.03 .05 .93 .95],'userdata',rho)
axis(R);
axis off comet(1) = line(y(1),y(2),y(3),'linestyle','none','marker','.', ...
'erasemode','xor','markersize',25);
comet(2) = line(NaN,NaN,NaN,'color','y','erasemode','none');
comet(3) = line(NaN,NaN,NaN,'color','y','erasemode','none');
Y = y(:,ones(L,1)); uics = flipud(get(gcf,'children'));
paws = uics(1);
stop = uics(2);
set(paws,'string','pause','callback','','value',0);
set(stop,'string','stop','callback','','value',0); beta = -A(1,1);
eta = sqrt(beta*(rho-1));
yc = [rho-1; eta; eta];
line(yc(1),yc(2),yc(3),'linestyle','none','marker','o','color','g')
line(yc(1),-yc(2),-yc(3),'linestyle','none','marker','o','color','g') ax = [R(2) R(1) R(1) R(1) R(1)];
ay = [R(3) R(3) R(4) R(3) R(3)];
az = [R(5) R(5) R(5) R(5) R(6)];
p = .9;
q = 1-p;
grey = [.4 .4 .4];
line(ax,ay,az,'color',grey);
text(p*R(1)+q*R(2),R(3),p*R(5),sprintf('%3.0f',R(1)),'color',grey)
text(q*R(1)+p*R(2),R(3),p*R(5),sprintf('%3.0f',R(2)),'color',grey)
text(R(1),p*R(3)+q*R(4),p*R(5),sprintf('%3.0f',R(3)),'color',grey)
text(R(1),q*R(3)+p*R(4),p*R(5),sprintf('%3.0f',R(4)),'color',grey)
text(R(1),R(3),p*R(5)+q*R(6),sprintf('%3.0f',R(5)),'color',grey)
text(R(1),R(3),q*R(5)+p*R(6),sprintf('%3.0f',R(6)),'color',grey)
fin = 0; cameratoolbar('setmode','orbit')
uicontrol('style','text','units','norm','pos',[.38 .02 .34 .04], ...
'foreground','white','background','black','fontangle','italic', ...
'string','Click on axis to rotate view') elseif isequal(job,'done') fin = 1; else % Update comet L = size(y,2);
Y(:,end+1:end+L) = y;
comet = flipud(get(gca,'children'));
set(comet(1),'xdata',Y(1,end),'ydata',Y(2,end),'zdata',Y(3,end));
set(comet(2),'xdata',Y(1,2:end),'ydata',Y(2,2:end),'zdata',Y(3,2:end))
set(comet(3),'xdata',Y(1,1:2),'ydata',Y(2,1:2),'zdata',Y(3,1:2))
Y(:,1:L) = [];
drawnow; % Pause and restart uics = flipud(get(gcf,'children'));
paws = uics(1);
stop = uics(2);
rhopick = uics(4);
rho = A(3,2);
while get(paws,'value')==1 & get(stop,'value')==0
set(paws,'string','resume');
drawnow;
end
set(paws,'string','pause')
fin = get(stop,'value') | get(rhopick,'value')==rho;
if fin
set(paws,'value',0,'string','restart','callback','lorenzgui')
set(stop,'value',0,'string','close', ...
'callback','cameratoolbar(''close''), close(gcf)')
end
end
Matlab function lorenzgui的更多相关文章
- Calling Matlab function from python: “initializer must be a rectangular nested sequence”
I am writing a python script from which I hope to call the Matlab anovan function. I have attempted ...
- [转] Loren on the Art of MATLAB
http://blogs.mathworks.com/loren/2007/03/01/creating-sparse-finite-element-matrices-in-matlab/ Loren ...
- Interpolation in MATLAB
Mathematics One-Dimensional Interpolation There are two kinds of one-dimensional interpolation i ...
- Matlab 进阶学习记录
最近在看 Faster RCNN的Matlab code,发现很多matlab技巧,在此记录: 1. conf_proposal = proposal_config('image_means', ...
- 【原创】Matlab.NET混合编程技巧之找出Matlab内置函数
本博客所有文章分类的总目录:[总目录]本博客博文总目录-实时更新 Matlab和C#混合编程文章目录 :[目录]Matlab和C#混合编程文章目录 Matlab与.N ...
- 以神经网络使用为例的Matlab和Android混合编程
由于需要在一个Android项目中使用神经网络,而经过测试发现几个Github上开源项目的训练效果就是不如Matlab的工具箱好,所以就想在Android上使用Matlab神经网络代码(可是...) ...
- MATLAB仿真总结
MATLAB仿真过程中,编写MATLAB代码的时候犯了很多错误,做了很多蠢事.记录下自己犯错的点点滴滴,并引以为戒.使用MATLAB版本为2014a,以下内容如有不当还请指正. 1. 仿真开始前清理工 ...
- Libsvm:脚本(subset.py、grid.py、checkdata.py) | MATLAB/OCTAVE interface | Python interface
1.脚本 This directory includes some useful codes: 1. subset selection tools. (子集抽取工具) subset.py 2. par ...
- Matlab与C/C++联合编程之Matlab以MEX方式调用C/C++代码(三)
最近写了个Matlab程序,好慢呐……所以开始学习Matlab与C/C++混合编程.下面写了个测试代码,显示一个Double类型矩阵中的元素. 源代码 #include "mex.h&quo ...
随机推荐
- 滑块视图容器 swiper
属性名 类型 默认值 说明 indicator-dots Boolean false 是否显示面板指示点 autoplay Boolean false 是否自动切换 current Number 0 ...
- Linux(以centos7为例)下自动挂载NTFS硬盘
Linux(以centos7为例)下自动挂载NTFS硬盘 作者:子敬叔叔 编写时间:2017年5月3日星期三 需求: 为了熟悉Linux的使用,在自己的笔记本上新安装一个centos7, 但我 ...
- vue.js项目nginx部署
开发环境搭建完成.二.编译部署1.项目路径下demo输入命令npm run build编译完成后会发现在demo文件夹下多出一个dist文件夹这里面就是编译好的文件了.2.网上下载nginx,下载地址 ...
- 27、通过visual s'tudio 验证 SOCKET编程:搭建一个TCP服务器
本文就是在windows下进行socket编程,搭建一个TCP客户端. 在visual studio下编程,首先在windows下进行初始化(这点在linux下是不需要的): /* 初始化 Winso ...
- Android开发 - 掌握ConstraintLayout(四)创建基本约束
上一篇我们介绍了编辑器的基本使用,本文我们介绍创建基本的约束. "约束"表示View之间的位置关系.当我们在ConstraintLayout布局中创建View时,如果我们没有添加任 ...
- Android开发工程师文集-Fragment,适配器,轮播图,ScrollView,Gallery 图片浏览器,Android常用布局样式
Android开发工程师文集-Fragment,适配器,轮播图,ScrollView,Gallery 图片浏览器,Android常用布局样式 Fragment FragmentManager frag ...
- JS应用实例2:轮播图
在学习轮播图之前,要先会切换图片: 找三张图片,命名1.jpg,2.jpg,3.jpg 示例: <!DOCTYPE html> <html> <head> < ...
- python实现归并排序算法
归并排序(英语:Merge sort,或mergesort),是创建在归并操作上的一种有效的排序算法,效率为O(nlogn). 1945年由约翰·冯·诺伊曼首次提出.该算法是采用分治法(Divide ...
- 机器学习技法笔记:10 Random Forest
Roadmap Random Forest Algorithm Out-Of-Bag Estimate Feature Selection Random Forest in Action Summar ...
- redis 乐观锁实践秒杀
需求:有一个标(理解成抢红包也行,accountBalance预赋值1000元),大家可以抢购,每个用户抢购成功后,更新最后标的总数,在并发情况下,使用redis的乐观锁,保证更新标总值正确性,先往r ...