📄 代码汇总.m
字号:
else
% Choose first three colors for head, body, and tail
head = line('color',co(1,:),'marker','o','erase','xor', ...
'xdata',x(1),'ydata',y(1),'zdata',z(1));
body = line('color',co(1,:),'linestyle','--','erase','none', ...
'xdata',[],'ydata',[],'zdata',[]);
tail = line('color',co(1,:),'linestyle','-','erase','none', ...
'xdata',[],'ydata',[],'zdata',[]);
end
m = length(z);
k = round(p*m);
q=1;
% Grow the body
for i = 2:k+1
j = i-1:i;
set(head,'xdata',x(i),'ydata',y(i),'zdata',z(i))
set(body,'xdata',x(j),'ydata',y(j),'zdata',z(j))
pause(time),
drawnow
set(h_my_menu3_sub2_text_xyz_t,'string',['t= ',sprintf('%2.4f\n',t(q))]);
set(h_my_menu3_sub2_text_xyz_x,'string',['x= ',sprintf('%2.4f\n',X1(q))]);
set(h_my_menu3_sub2_text_xyz_y,'string',['y= ',sprintf('%2.4f\n',x(q))]);
set(h_my_menu3_sub2_text_xyz_z,'string',['z= ',sprintf('%2.4f\n',y(q))]);
q=q+1;
end
% Primary loop
m = length(x);
for i = k+2:m
j = i-1:i;
set(head,'xdata',x(i),'ydata',y(i),'zdata',z(i))
set(body,'xdata',x(j),'ydata',y(j),'zdata',z(j))
set(tail,'xdata',x(j-k),'ydata',y(j-k),'zdata',z(j-k))
drawnow
pause(time),
set(h_my_menu3_sub2_text_xyz_t,'string',['t= ',sprintf('%2.4f\n',t(q))]);
set(h_my_menu3_sub2_text_xyz_x,'string',['x= ',sprintf('%2.4f\n',X1(q))]);
set(h_my_menu3_sub2_text_xyz_y,'string',['y= ',sprintf('%2.4f\n',x(q))]);
set(h_my_menu3_sub2_text_xyz_z,'string',['z= ',sprintf('%2.4f\n',y(q))]);
q=q+1;
end
% Clean up the tail
for i = m+1:m+k
j = i-1:i;
set(tail,'xdata',x(j-k),'ydata',y(j-k),'zdata',z(j-k))
drawnow
end
title('Lorenz strange singularity phase'),xlabel('y'),ylabel('z'),zlabel('x'),
legend('x',4) %选4可使彗星图不被刷掉
function my_comet_strangespace_xyz_z(x,y,z,p,time) %函数体参量表一定没有常数或代数式.x,y平面的轨线彗星图及z(t)坐标同步运行
global X3 t
global h_my_menu3_sub1_text_xyz_t h_my_menu3_sub1_text_xyz_z h_my_menu3_sub1_text_xyz_x h_my_menu3_sub1_text_xyz_y%此处一定要写
figure(12)
set(h_my_menu3_sub1_text_xyz_t,'string',['t= ',sprintf('%2.4f\n',0)]);
set(h_my_menu3_sub1_text_xyz_z,'string',['z= ',sprintf('%2.4f\n',0)]);
set(h_my_menu3_sub1_text_xyz_x,'string',['x= ',sprintf('%2.4f\n',0)]);
set(h_my_menu3_sub1_text_xyz_y,'string',['y= ',sprintf('%2.4f\n',0)]);
if nargin == 0, error('Not enough input arguments.'); end
if nargin < 3, z = x; x = 1:length(z); y = 1:length(z); end
if nargin < 4, p = 0.10; end
ax = newplot;
if ~ishold,
axis([min(x(isfinite(x))) max(x(isfinite(x))) min(y(isfinite(y))) ...
max(y(isfinite(y))) min(z(isfinite(z))) max(z(isfinite(z)))])
end
co = get(ax,'colororder');
if size(co,1)>=3,
% Choose first three colors for head, body, and tail
head = line('color',co(1,:),'marker','o','erase','xor', ...
'xdata',x(1),'ydata',y(1),'zdata',z(1));
body = line('color',co(2,:),'linestyle','-','erase','none', ...
'xdata',[],'ydata',[],'zdata',[]);
tail = line('color',co(3,:),'linestyle','-','erase','none', ...
'xdata',[],'ydata',[],'zdata',[]);
else
% Choose first three colors for head, body, and tail
head = line('color',co(1,:),'marker','o','erase','xor', ...
'xdata',x(1),'ydata',y(1),'zdata',z(1));
body = line('color',co(1,:),'linestyle','--','erase','none', ...
'xdata',[],'ydata',[],'zdata',[]);
tail = line('color',co(1,:),'linestyle','-','erase','none', ...
'xdata',[],'ydata',[],'zdata',[]);
end
m = length(z);
k = round(p*m);
q=1;
% Grow the body
for i = 2:k+1
j = i-1:i;
set(head,'xdata',x(i),'ydata',y(i),'zdata',z(i))
set(body,'xdata',x(j),'ydata',y(j),'zdata',z(j))
pause(time),
drawnow
set(h_my_menu3_sub1_text_xyz_t,'string',['t= ',sprintf('%2.4f\n',t(q))]);
set(h_my_menu3_sub1_text_xyz_z,'string',['z= ',sprintf('%2.4f\n',X3(q))]);
set(h_my_menu3_sub1_text_xyz_x,'string',['x= ',sprintf('%2.4f\n',x(q))]);
set(h_my_menu3_sub1_text_xyz_y,'string',['y= ',sprintf('%2.4f\n',y(q))]);
q=q+1;
end
% Primary loop
m = length(x);
for i = k+2:m
j = i-1:i;
set(head,'xdata',x(i),'ydata',y(i),'zdata',z(i))
set(body,'xdata',x(j),'ydata',y(j),'zdata',z(j))
set(tail,'xdata',x(j-k),'ydata',y(j-k),'zdata',z(j-k))
drawnow
pause(time),
set(h_my_menu3_sub1_text_xyz_t,'string',['t= ',sprintf('%2.4f\n',t(q))]);
set(h_my_menu3_sub1_text_xyz_z,'string',['z= ',sprintf('%2.4f\n',X3(q))]);
set(h_my_menu3_sub1_text_xyz_x,'string',['x= ',sprintf('%2.4f\n',x(q))]);
set(h_my_menu3_sub1_text_xyz_y,'string',['y= ',sprintf('%2.4f\n',y(q))]);
q=q+1;
end
% Clean up the tail
for i = m+1:m+k
j = i-1:i;
set(tail,'xdata',x(j-k),'ydata',y(j-k),'zdata',z(j-k))
drawnow
end
title('Lorenz strange singularity phase'),xlabel('x'),ylabel('y'),zlabel('z'),
legend('z',4) %选4可使彗星图不被刷掉
function my_comet_xy(x,y,p,time) %函数体参量表一定没有常数或代数式.x,y平面的轨线彗星图及z(t)坐标同步运行
global X3 t b r
figure(3)
set(gcf,'unit','normalized','position',[0.31,0.53,0.64,0.35]);
set(gcf,'defaultuicontrolunits','normalized');
set(gcf,'defaultuicontrolfontsize',12);
set(gcf,'defaultuicontrolfontname','隶书');
str='X-Y平面彗星图';
set(gcf,'name',str,'numbertitle','off');
h_axes=axes('position',[0.05,0.2,0.6,0.7]);
set(h_axes,'xlim',[-40,40],'ylim',[-40,40]);
singularity1_x=0;singularity1_y=0;
singularity2_x=(b*(r-1))^(1/2);singularity2_y=(b*(r-1))^(1/2);
singularity3_x=-(b*(r-1))^(1/2);singularity3_y=-(b*(r-1))^(1/2);
plot(x,y,'W'),hold on
if r<=1
plot(singularity1_x,singularity1_y,'k.','MarkerSize',20) %画奇点
text(singularity1_x,singularity1_y,' O')
else
plot(singularity1_x,singularity1_y,'k.','MarkerSize',20) %画奇点
text(singularity1_x,singularity1_y,' O')
plot(singularity2_x,singularity2_y,'k.','MarkerSize',20) %画奇点
text(singularity2_x,singularity2_y,' C+')
plot(singularity3_x,singularity3_y,'k.','MarkerSize',20) %画奇点
text(singularity3_x,singularity3_y,' C-')
end
h_my_comet_xy_t=uicontrol(gcf,'style','text',...
'position',[0.77,0.64,0.11,0.13],...
'string',['t=',sprintf('%1.4g\',0)]);
h_my_comet_xy_z=uicontrol(gcf,'style','text',...
'position',[0.77,0.44,0.11,0.13],...
'string',['z=',sprintf('%1.4g\',0)]);
if nargin == 0, error('Not enough input arguments.'); end
if nargin < 2, y = x; x = 1:length(y); end
if nargin < 3, p = 0.10; end
ax = newplot;
if ~ishold,
axis([min(x(isfinite(x))) max(x(isfinite(x))) ...
min(y(isfinite(y))) max(y(isfinite(y)))])
end
co = get(ax,'colororder');
if size(co,1)>=3,
% Choose first three colors for head, body, and tail
head = line('color',co(1,:),'marker','^','erase','xor', ...
'xdata',x(1),'ydata',y(1));
body = line('color',co(2,:),'linestyle','-','erase','none', ...
'xdata',[],'ydata',[]);
tail = line('color',co(3,:),'linestyle','-','erase','none', ...
'xdata',[],'ydata',[]);
else
% Choose first three colors for head, body, and tail
head = line('color',co(1,:),'marker','o','erase','xor', ...
'xdata',x(1),'ydata',y(1));
body = line('color',co(1,:),'linestyle','--','erase','none', ...
'xdata',[],'ydata',[]);
tail = line('color',co(1,:),'linestyle','-','erase','none', ...
'xdata',[],'ydata',[]);
end
m = length(x);
k = round(p*m);
q=1;
% Grow the body
for i = 2:k+1
j = i-1:i;
set(head,'xdata',x(i),'ydata',y(i))
set(body,'xdata',x(j),'ydata',y(j))
pause(time)
drawnow
set(h_my_comet_xy_t,'string',['t= ',sprintf('%1.4g\',t(q))]);
set(h_my_comet_xy_z,'string',['z= ',sprintf('%1.4g\',X3(q))]);
q=q+1;
%开始时速度
end
% Primary loop
for i = k+2:m
j = i-1:i;
set(head,'xdata',x(i),'ydata',y(i))
set(body,'xdata',x(j),'ydata',y(j))
set(tail,'xdata',x(j-k),'ydata',y(j-k))
drawnow
pause(time) %连点速度
set(h_my_comet_xy_t,'string',['t= ',sprintf('%1.4g\',t(q))]);
set(h_my_comet_xy_z,'string',['z= ',sprintf('%1.4g\',X3(q))]);
q=q+1;
end
% Clean up the tail
for i = m+1:m+k
j = i-1:i;
set(tail,'xdata',x(j-k),'ydata',y(j-k))
drawnow
%刷新颜色
end
xlabel('x'),ylabel('y'),
function my_comet_xyz(x,y,z,t,p,time,htext_xyz_t,htext_xyz_x,htext_xyz_y,htext_xyz_z) %与轨线运动同步显示坐标
global b r
if nargin == 0, error('Not enough input arguments.'); end
if nargin < 3, z = x; x = 1:length(z); y = 1:length(z); end
if nargin < 4, p = 0.10; end
singularity1_x=0;singularity1_y=0;singularity1_z=0;
singularity2_x=(b*(r-1))^(1/2);singularity2_y=(b*(r-1))^(1/2);singularity2_z=r-1;
singularity3_x=-(b*(r-1))^(1/2);singularity3_y=-(b*(r-1))^(1/2);singularity3_z=r-1;
plot3(x,y,z,'W'),hold on
if r<=1
plot3(singularity1_x,singularity1_y,singularity1_z,'k.','MarkerSize',20) %画奇点
text(singularity1_x,singularity1_y,singularity1_z,' O')
else
plot3(singularity1_x,singularity1_y,singularity1_z,'k.','MarkerSize',20) %画奇点
text(singularity1_x,singularity1_y,singularity1_z,' O')
plot3(singularity2_x,singularity2_y,singularity2_z,'k.','MarkerSize',20) %画奇点
text(singularity2_x,singularity2_y,singularity2_z,' C+')
plot3(singularity3_x,singularity3_y,singularity3_z,'k.','MarkerSize',20) %画奇点
text(singularity3_x,singularity3_y,singularity3_z,' C-')
end
hold on
title('Lorenz phase'),xlabel('x'),ylabel('y'),zlabel('z'),
ax = newplot;
if ~ishold,
axis([min(x(isfinite(x))) max(x(isfinite(x))) min(y(isfinite(y))) ...
max(y(isfinite(y))) min(z(isfinite(z))) max(z(isfinite(z)))])
end
co = get(ax,'colororder');
if size(co,1)>=3,
% Choose first three colors for head, body, and tail
head = line('color',co(1,:),'marker','o','erase','xor', ...
'xdata',x(1),'ydata',y(1),'zdata',z(1));
body = line('color',co(2,:),'linestyle','-','erase','none', ...
'xdata',[],'ydata',[],'zdata',[]);
tail = line('color',co(3,:),'linestyle','-','erase','none', ...
'xdata',[],'ydata',[],'zdata',[]);
else
% Choose first three colors for head, body, and tail
head = line('color',co(1,:),'marker','o','erase','xor', ...
'xdata',x(1),'ydata',y(1),'zdata',z(1));
body = line('color',co(1,:),'linestyle','--','erase','none', ...
'xdata',[],'ydata',[],'zdata',[]);
tail = line('color',co(1,:),'linestyle','-','erase','none', ...
'xdata',[],'ydata',[],'zdata',[]);
end
m = length(z);
k = round(p*m);
q=1;
% Grow the body
for i = 2:k+1
j = i-1:i;
set(head,'xdata',x(i),'ydata',y(i),'zdata',z(i))
set(body,'xdata',x(j),'ydata',y(j),'zdata',z(j))
pause(time),
drawnow
set(htext_xyz_t,'string',['t= ',sprintf('%2.8f\n',t(q))]);
set(htext_xyz_x,'string',['x= ',sprintf('%2.8f\n',x(q))]);
set(htext_xyz_y,'string',['y= ',sprintf('%2.8f\n',y(q))]);
set(htext_xyz_z,'string',['z= ',sprintf('%2.8f\n',z(q))]);
q=q+1;
end
% Primary loop
m = length(x);
for i = k+2:m
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -