求用matlab制作简单动画实例
或者是画一个黑白棋盘,让里面的小方格颜色变化形成动画,求相关实例. 展开
具体制作方法如下:
1、首先,这里举例代码如下:
x=-8:0.5:8;
[XX,YY]=meshgrid(x);
r=sqrt(XX.^2+YY.^2)+eps;
Z=sin(r)./r;
surf(Z);
生成了一幅静态的surf图片,XX,YY由meshgrid生成。
2、下面输入
theAxes=axis;,
右侧可以看到,theAxes=[0,40,0,40,-0.5,1],这是surf函数生成的,因为上面绘制的surf没有使用surf(XX,YY,Z)所以坐标范围不同,但是无论什么坐标范围,这里都先取出来,存到一个变量中,后面备用。
3、fmat=moviein(20);
将fmat保存为一个moviein结构体,20表示动画有20帧。
4、输入:
for j=1:20;
surf(sin(2*pi*j/20)*Z,Z)
axis(theAxes)
fmat(:,j)=getframe;
end
这里就是分别画每一帧的图像,此处我们的surf是分20份来画,坐标轴统一为之前的保存的坐标轴,把moviein结构体fmat的取为getframe,如图。
5、movie(fmat,10);就是动画放10遍。
6、全代码如下:
x=-8:0.5:8;
[XX,YY]=meshgrid(x);
r=sqrt(XX.^2+YY.^2)+eps;
Z=sin(r)./r;
surf(Z);
theAxes=axis;
fmat=moviein(20);
for j=1:20;
surf(sin(2*pi*j/20)*Z,Z)
axis(theAxes)
fmat(:,j)=getframe;
end
movie(fmat,10)
2024-07-20 广告
Speed = 1; %数字越大越快
W = ones(40);
B = zeros(40);
P1 = [B W];
P1 = repmat(P1,1,10);
P2 = [W B];
P2 = repmat(P2,1,10);
P = [P1;P2];
P = repmat(P,8,1);
imshow(P)
drawnow;
pause(2/Speed);
f = 1;
tic;
while f
t = toc;
if t >= 30
f = 0;
end
Pn = P;
Pn(P==1) = rand(1);
Pn(P==0) = rand(1);
Pn(1,1) = 1;
imagesc(Pn); axis equal; colormap jet;
drawnow;
pause(2/Speed);
end
看看满意不