蝴蝶效应

2021-04-14 10:46:27 浏览数 (1)

None在移动图形对象时,MATLAB不进行擦除。

Background在移走图形对象后,MATLAB将原来的对象进行擦除,在原来的位置用背景色进行重绘。

Xor与Background模式相比,这种模式只擦除对象本身。

我们作图要用

1961年,气象学家爱沃德·劳伦兹(在进行一项计算机天气模拟,决定对其中的一个参量采用四舍五入进行计算。这个小小的变化完全改变了天气模型。这成为后来著名的蝴蝶效应:一只蝴蝶在巴西扇动翅膀会在美国得克萨斯州引起一场风暴。劳伦兹的这种做法创立了混沌理论(第10章介绍),启发气象学家将尽可能精确的数据输入计算机模型以增长他们的预测区间。但是即使极为精确的数据也不能使我们获得精确的长期性预测结果,气候学家还需要了解大气和海洋的交互性影响等多种影响天气的因素。因此,预报数十年后或数世纪后的天气,基本上是不可能的。

劳伦兹方程的形式如下:

代码语言:javascript复制
clear
a=[-8/3 0 0;0 -10 10;0 28 -1];
y=[35 -10 -7];
h=0.01;
p=plot3(y(1),y(2),y(3),'.','EraseMode','none','MarkerSize',5);
%擦除模式为none
axis([0 50 -25 25 -25 25])
hold on
for i=1:4000
    a(1,3)=y(2);
    a(3,1)=-y(2);
    ydot=a*y;
    y=y h*ydot;
    set(p,'XData',y(1),'YData',y(2),'ZData',y(3))
    drawnow
    i=i 1;
end

在三维空间演示一个由著名的劳伦兹非线性奇异方程所描述的无序运动。


对不起,,,我可能写错了代码

这样的

代码语言:javascript复制
clear
axis equal
m=moviein(16);
set(gca,'NextPlot','replacechildren')
for j=1:16
    plot(fft(eye(j 16)))
    m(:,j)=getframe;
end
movie(m,30)

MATLAB中可以先存储一系列各种类型的二维或三维图,然后像放电影一样把它们按次序重放出来。在某种意义上,动画提供的运动为图形增加另一个维数。通常图形的次序不必以任意的方式关联起来。一种明显的动画类型是取出三维图形然后缓慢地将它旋转,这样就可以从不同角度来观察它;另一种类型是当一个参数变化时,依次显示某些问题解的图形。

MATLAB中的函数moviein、getirame和movie提供了捕捉和播放动画的工具。

(1)moviein可以产生一个帧矩阵来存放动画中的帧。

(2)getframe对当前的图像进行快照。

(3)movie按顺序回放各帧。

MATLAB中,创建电影动画的基本步骤如下:

①调用moviein函数对内存进行初始化,创建一个足够大的矩阵,使之能够容纳基于当前坐标轴大小的一系列指定的图形(此处称为帧)。

②调用getframe函数生成每个帧。该函数返回一个列矢量,利用这个矢量就可以创建一个电影动画矩阵。

③调用movie函数按照指定的速度和次数运行该电影动画。

此外,利用immovie函数可以从多帧图像阵列中创建MATLAB电影动画。需要注意的是:该函数只能应用于索引图像,所以,如果用户希望其他类型的图像阵列转换为电影动画,则应首先将该图像类型转换为索引类型。

以电影播放的方式呈现动画,就是先保存多幅不同的图片(欲产生动画的图片),然后存储成一系列各种类型的二维或三维图,再想放电影一样把它们按次序播放出来。

上面介绍的操作方法首先必须由getframe函数将当前的图片抓取作为电影的画面(将每个欲播放的画面抓取后,以行向量的存储方式置于电影的矩阵M中),再由movie函数一次将动画放映出来:另外,也可以使用movie来指定播放的次数,如movie(M,20),表示重复播放20次。

需要特别注意的是,对于比较早期的MATLAB版本,必须额外使用moviein函数预留内存空间来保存电影播放的每一个画面,也就是说,moviein指定的内存量会与要显示的画面数目大小有关,通常成正比关系。

电影方式的结构如下:

就先这样,插值拟合什么的.明天写

0 人点赞