matlab动画制作源代码

合集下载

matlab动画-流星雨

matlab动画-流星雨

clc;%清屏ysy=figure('name','一起去看流星雨');%标题axis([0 80 0 80]);hold on;axis off;set(ysy,'color','k');%设置背景为黑色%%%%%以下是画月亮t6=-pi/3:0.01:0;x6=60+10*cos(t6);y6=60+10*sin(t6);plot(x6,y6,'color',[1 1 0]);%画第一条弧线t7=-pi*2/3:0.01:pi/3;x7=67.5+5*cos(t7);y7=60-sqrt(3)*5/2+5*sin(t7);plot(x7,y7,'color',[1 1 0]);%画第二条弧线fill([x6,x7],[y6,y7],'y');%将月亮填充为黄色%%%%%以下为画五角星line([30,33,34,35,38,36,38,34,30,32,30],[60,60,62.5,60,60,59,56.5,58,56.5,59,60],...'color','b','MarkerEdgeColor','b','linewidth',2);%画五角星fill([30,33,34,35,38,36,38,34,30,32,30],...[60,60,62.5,60,60,59,56.5,58,56.5,59,60],'b');%填充五角星%%%%%以下是画人%%%%%%%男t8=0:0.01:2*pi;x8=40+2*cos(t8);y8=24+4*sin(t8);plot(x8,y8,'b','linewidth',2);%%%%%画头line([40,40.8],[26,26],'color','y');%左眼line([41.4,41.8],[26,26],'color','y');%右眼line(41.3,24.1,'color','y','linestyle','.','erasemode','xor','markersize',5);%鼻line([41,41.8],[22,22],'color','y');%嘴line([39.8,39.8,38.3,38.3,41.7,41.7,40.8,40.8,39.8],[20,19,18.7,0,0.5,18.7,19,20,20],...'color','b','linewidth',2);%躯干line([41.7,41.7],[13.4,16.2],'color','k','linewidth',2)%清除被手臂挡住的线line([40.7,40.7],[0.35,8.7],'color','b','linewidth',2);%用一条线将矩形分开,就是腿line([40,41,44,45,41,40],[18.2,16,18.8,17.8,13.1,15.3],'color','b','linewidth',2);%%胳膊%%%%%%%%女t9=0:0.01:2*pi;x9=50+2*cos(t8);y9=22+4*sin(t8);plot(x9,y9,'color','m','linewidth',2);%%%%%画头line([50,49.2],[24,24],'color','y');%左眼line([48.2,48.6],[24,24],'color','y');%右眼line(48.7,22.1,'color','y','linestyle','.','erasemode','xor','markersize',5);%鼻line([48.2,49.2],[20,20],'color','y');%嘴line([49.8,49.8,48.3,48.3,46.3,48.3,48.3,51.7,51.7,53.7,51.7,51.7,50.8,50.8],...[18,17,16.7,8,4,4,0.5,0,4,4,8,16.7,17,18],'color','m','linewidth',2);%躯干line([48.3,48.3],[14.1,16.1],'color','k','linewidth',2)%清除挡住的线line([49.3,49.3],[0.35,4],'color','m','linewidth',2);%腿line([50,47.8,45.8,45,47.8,50],[16.4,16,18.4,17.8,14,14.4],'color','m','linewidth',2);%%胳膊b1=text(20,70,'哇塞!流星雨来了!','fontsize',16,'color','r');%输入字pause(1);%停顿一秒delete(b1);%删除b1b2=text(22,68,'听说...','fontsize',16,'color','r');pause(1);delete(b2);b3=text(24,66,'在流星雨下许的愿,一定会实现!','fontsize',16,'color','r');pause(2);delete(b3);b4=text(54,28,'愿我们相伴一生!','fontsize',16,'color','r');b5=text(10,30,'愿执子之手,','fontsize',16,'color','r');b6=text(12,22,'与子偕老!','fontsize',16,'color','r');a1=line(5,70,'color','w','linestyle','.','erasemode','xor','markersize',10);%流星1a2=line(5,65,'color','w','linestyle','.','erasemode','xor','markersize',10);%流星2a3=line(5,60,'color','w','linestyle','.','erasemode','xor','markersize',10);%流星3a4=line(5,55,'color','w','linestyle','.','erasemode','xor','markersize',10);%流星4a5=line(5,50,'color','w','linestyle','.','erasemode','xor','markersize',10);%流星5x1=5;%流星1的初始横坐标y1=70;;%流星1的初始纵坐标x2=5;y2=65;x3=5;y3=60;x4=5;y4=55;x5=5;y5=50;dt1=0.4375;%递增量dt2=0.1;%递增量t1=x1;t2=x2;t3=x3;t4=x4;t5=x5;r1=1;%画心形中的小圆半径r2=4;%画心形中的大圆半径c1=39;%小圆1的初始横坐标d1=33;%小圆1的初始纵坐标c2=41;%小圆2的初始横坐标d2=33;%小圆2的初始纵坐标c3=38;%大圆1的初始横坐标d3=33;%大圆1的初始纵坐标c4=42;%大圆2的初始横坐标d4=33;%大圆2的初始纵坐标f1=c1+10;%第二个心形中小圆1的横坐标f2=c2+10;%第二个心形中小圆2的横坐标f3=c3+10;%第二个心形中大圆1的横坐标f4=c4+10;%第二个心形中大圆2的横坐标%第二个心形中的纵坐标跟第一个共用t=0.09;%递增量t10=0:0.01:pi;%设置弧度t11=-pi*11/30:0.01:0;t12=-pi:0.01:-pi*19/30;%流星雨开始及心形移动while t5<80 %循环开始t1=t1+dt1;t2=t2+dt1;t3=t3+dt1;t4=t4+dt1;t5=t5+dt1;x1=t1;x2=t2;x3=t3;x4=t4;x5=t5;y1=y1+dt2;y2=y2+dt2;y3=y3+dt2;y4=y4+dt2;y5=y5+dt2;set(a1,'xdata',[x1,x1],'ydata',[y1,y1]);%流星1的移动set(a2,'xdata',[x2,x2],'ydata',[y2,y2]);%流星2的移动set(a3,'xdata',[x3,x3],'ydata',[y3,y3]);%流星3的移动set(a4,'xdata',[x4,x4],'ydata',[y4,y4]);%流星4的移动set(a5,'xdata',[x5,x5],'ydata',[y5,y5]);%流星5的移动c1=c1+t/3.2;c2=c2+t/3.2;c3=c3+t/3.2;c4=c4+t/3.2;f1=f1-t/3.2;f2=f2-t/3.2;f3=f3-t/3.2;f4=f4-t/3.2;d1=d1+t;d2=d2+t;d3=d3+t;d4=d4+t;c5=c1+r1*cos(t10);d5=d1+r1*sin(t10);f5=f1+r1*cos(t10);c6=c2+r1*cos(t10);d6=d2+r1*sin(t10);f6=f2+r1*cos(t10);c7=c3+r2*cos(t11);d7=d3+r2*sin(t11);f7=f3+r2*cos(t11);c8=c4+r2*cos(t12);d8=d4+r2*sin(t12);f8=f4+r2*cos(t12);plot(c5,d5,'r');%小圆弧1plot(c6,d6,'r');%小圆弧2plot(c7,d7,'r');%大圆弧1plot(c8,d8,'r');%大圆弧2plot(f5,d5,'r');%第二个心形小圆弧1plot(f6,d6,'r');%小圆弧2plot(f7,d7,'r');%大圆弧1plot(f8,d8,'r');%大圆弧2pause(0.01);%停顿0.01秒drawnow;fill([c1-1.1,c2+1.1,c2+1.1,c1-1.1],[d1-4,d1-4,d2+1,d2+1],'k');%除去显示出来的心形1,以便移动fill([f1-1.1,f2+1.1,f2+1.1,f1-1.1],[d1-4,d1-4,d2+1,d2+1],'k');%除去显示出来的心形2,以便移动end;%循环结束plot(c5,d5,'r');plot(c6,d6,'r');plot(c7,d7,'r');plot(c8,d8,'r');%显示最后的心形。

matlab光流法源代码

matlab光流法源代码

matlab光流法源代码以下是一个简单的MATLAB光流法源代码示例:matlab.% 读取视频文件。

videoFile = 'path_to_video_file'; % 替换为视频文件的路径。

videoObj = VideoReader(videoFile);% 读取第一帧图像。

frame1 = readFrame(videoObj);frame1_gray = rgb2gray(frame1);% 初始化光流估计器。

opticalFlow = opticalFlowLK('NoiseThreshold', 0.01); % 遍历视频的每一帧并计算光流。

while hasFrame(videoObj)。

% 读取当前帧图像。

frame2 = readFrame(videoObj);frame2_gray = rgb2gray(frame2);% 计算光流向量。

flow = estimateFlow(opticalFlow, frame1_gray); % 可视化光流向量。

imshow(frame1);hold on;plot(flow, 'DecimationFactor', [5 5], 'ScaleFactor', 10);hold off;drawnow;% 更新帧和光流向量。

frame1_gray = frame2_gray;end.请注意,这只是一个简单的光流法示例,使用了MATLAB的光流估计器函数`opticalFlowLK`。

你需要将`path_to_video_file`替换为实际的视频文件路径。

此代码将逐帧计算光流向量,并在每一帧上绘制光流向量的可视化结果。

这只是光流法的一个基本示例,实际应用中可能需要更复杂的光流估计器或其他处理步骤。

希望这个简单的代码示例能够帮助你入门光流法的实现。

MATLAB2015b动画制作

MATLAB2015b动画制作
7
t=t-dt; if w<=1 w=dw+w; else w=-1; end y=(-w*w)/2+0.5; addpoints(head,t,y); drawnow; end 图 5-5 是例 5-5 中的程序生成的动画中的一帧。
图 5-5 小球正在台阶上蹦
5.2.2 以电影播放方式生成动画
此方法就是先保存动画过程中的很多图片,再像放电影一样把它们按次序播放出来。 这种操作的步骤是先用 getframe 函数将当前的图片抓取作为电影的画面后,再用 movie 函数一次将动画放映出来。 此外 movie 函数还可以指定播放次数, 如 movie(M,3) 表示重复播放 M 中存储的动画 3 次。 【例 5-6】建立一个绕 z 轴旋转的 peaks 动画,代码如下: [x,y,z]=peaks(30);
2
第5章
MATLAB 动画制作
图 5-2 彗星绕地球运动轨迹图
5.1.2 旋转调色板
MATLAB 提供了一个动态变化颜色的函数 spinmap。它的功能是使当前图形的 RGB 值产生固定的增量,做循环变化,用于产生动画效果。与前面的彗星图不同,该函数 不涉及对图形特征的操作,而只限于对调色板进行旋转。spinmap 的语法格式如下: 1. spinmap %使用增量值 2 循环旋转调色板约五秒。 2. spinmap(t) %旋转调色板大约 10×t 秒。 3. spinmap(t,inc)%旋转调色板大约 10×t 秒并且指定调色板变化的增量。 4. spinmap('inf')%使调色板无限的旋转下去,按 Ctrl+C 可以终止此循环。 【例 5-3】生成一个变色球体,代码如下: sphere(30) axis equal spinmap 动态图形结束后如图 5-3 所示。

matlab动态绘图Animation

matlab动态绘图Animation

matlab动态绘图Animation 主要是查看matlab帮助的Animation动画页⾯1、函数播放录制的电影桢将轴或图形捕获为影⽚帧返回与电影帧相关联的图像数据将图像转换为电影帧创建动画线⼆维彗星图三维彗星图更新数据并处理回调指定数据源后刷新图中的数据线动画2、官⽅例⼦(1)画出sin(x)图像,并且追踪⼀个点%%%创建sinxx = linspace(0,10,1000);y = sin(x);plot(x,y)hold onp = plot(x(1),y(1),'o','MarkerFaceColor','red'); %标记第⼀个点,设置为红⾊hold offaxis manual %将轴限制模式设置为⼿动,以避免在整个动画循环中重新计算限制。

%%%使⽤drawnow动态画图for k = 2:length(x)p.XData = x(k);p.YData = y(k);drawnowend(2)画出sin(x)图像,追踪⼀个点,显⽰坐标变换%%%画出sin(x)图像x = linspace(-6,6,1000);y = sin(x);plot(x,y)axis manual%%%设置图⽚格式ax = gca;h = hgtransform('Parent',ax);hold onplot(x(1),y(1),'o','Parent',h);hold offt = text(x(1),y(1),num2str(y(1)),'Parent',h,...'VerticalAlignment','top','FontSize',14);%%%使⽤drawnow动态画图for k = 2:length(x)m = makehgtform('translate',x(k)-x(1),y(k)-y(1),0);h.Matrix = m;t.String = num2str(y(k));drawnowend(3)这个例⼦展⽰了如何通过更新三⾓形的数据属性来让⼀个三⾓形在圆的内部循环。

matlab综合题:采用动画的形式书写本人的名字,具体字体自定

matlab综合题:采用动画的形式书写本人的名字,具体字体自定

matlab综合题:采用动画的形式书写本人的名字,具体字体自定为了在MATLAB中创建一个动画来书写您的名字,我们可以使用plot函数来绘制每个字符,并使用pause函数来逐帧显示动画。

以下是一个简单的示例,演示如何创建这样的动画。

假设您的名字是"张三",我们将使用宋体字体。

matlab% 初始化参数fontsize = 20; % 字体大小x = 0:0.1:10; % x轴范围y = sin(x); % 示例数据% 获取您的名字name = input('请输入您的名字: ','s');% 创建动画帧for i = 1:length(name)% 绘制当前字符plot(x, y, 'fontsize', fontsize);text(5, 0, name(i), 'fontsize', fontsize);% 暂停并显示当前帧pause(0.1); % 控制动画速度clear x y name; % 清空变量以准备下一个字符end在上述代码中,我们首先定义了一些参数,如字体大小和x轴范围。

然后,我们使用input函数从用户那里获取名字。

接下来,我们使用一个for循环来逐个绘制名字中的每个字符。

对于每个字符,我们使用plot函数绘制背景,并使用text函数在适当的位置绘制字符。

然后,我们使用pause函数暂停程序,以便用户可以看到当前帧。

最后,我们使用clear函数清空变量,以便绘制下一个字符。

注意:这只是一个基本的示例,您可能需要根据自己的需求进行修改和优化。

matlab动态爱心代码

matlab动态爱心代码

matlab动态爱心代码Matlab动态爱心代码介绍Matlab是一种广泛使用的数学软件,它具有强大的计算能力和丰富的绘图功能。

本文将介绍如何使用Matlab编写一个动态爱心代码。

步骤1. 创建一个新的Matlab脚本文件。

2. 定义变量t,从0到2*pi生成100个点。

```t = linspace(0, 2*pi, 100);```3. 计算x和y坐标。

```x = 16*sin(t).^3;y = 13*cos(t)-5*cos(2*t)-2*cos(3*t)-cos(4*t); ```4. 绘制爱心图形。

```plot(x, y, 'r', 'LineWidth', 2);axis equal off;hold on;fill(-x, y, 'r');```5. 添加动画效果。

```for i = 1:50fill(-x, y, 'w');x = x + randn(size(x))/10;y = y + randn(size(y))/10;plot(x, y, 'r', 'LineWidth', 2);axis equal off;hold on;fill(-x, y, 'r');pause(0.1);end```6. 运行脚本文件,观察动态爱心效果。

完整代码```matlabt = linspace(0, 2*pi, 100);x = 16*sin(t).^3;y = 13*cos(t)-5*cos(2*t)-2*cos(3*t)-cos(4*t);plot(x, y, 'r', 'LineWidth', 2);axis equal off;hold on;fill(-x, y, 'r');for i = 1:50fill(-x, y, 'w');x = x + randn(size(x))/10;y = y + randn(size(y))/10;plot(x, y, 'r', 'LineWidth', 2);axis equal off;hold on;fill(-x, y, 'r');pause(0.1);end```总结本文介绍了如何使用Matlab编写一个动态爱心代码。

MATLAB中的动画设计

MATLAB中的动画设计
当创建了一系列动画帧后,可利用movie函数播放这些动画帧。该函数的主要格式有: (1)movie(M),将矩阵M中的动画帧播放一次 (2)movie(M,n),将矩阵M中的动画帧播放n次 (3)movie(M,n,fps),将矩阵M中的动画帧以每秒fps帧的速度播放n次
精选课件
9
MATLAB中的动画设计——电影动画
view(-45+15*(i-1),30) %视角的改变 m(:,i)=getframe;%抓取画面值 end movie(m)%播放画面
精选课件
11
MATLAB中的动画设计——擦除动画
3、擦除动画
• 使用Matlab的绘图函数不断重复绘制图形对象,重绘过程中递增式地改 变图形对象位置将产生动画效果。
精选课件
12
MATLAB中的动画设计——擦除动画
设计步骤
• step1:设置重绘对象的擦除模式'EraseMode'模式 • step2:在循环语句中使用set更改图形的xdata,ydata和zdata等坐
标数据。 • step3:使用darwnow命令刷新屏幕
程序结构
set(h,'erasemode',erasemode)%h是需要执行动画图像的句柄,一般 都是由line或者plot创建
精选课件
5
MATLAB中的动画设计——质点动画
【例2】质点绕螺旋轨迹运动
%使用函数comet3建立质点绕圆运动的动画 clear t=0:pi/500:10*pi; plot3(sin(t),cos(t),t) axis square; %hold on; comet3(sin(t),cos(t),t,0.5)
程序结构
精选课件

matlab动画制作

matlab动画制作

动画制作动画制作通常有两种方法:一种是预先将图形制作好,并放到图形缓冲区内,然后一帧一帧地播放。

另一种方法是保持整个背景图案不变,只更新运动部分的图案,以便加快每幅图的实时生成速度。

1.简单动画制作在getframe命令下,可以完成动态数据到动态画面的制作。

其使用格式及制作步骤一般为:for j=1:nplot_commandM(j) = getframe;endmovie(M,n)其中M(j)=getframe将当前图形窗口中的画面作为第j帧存入矩阵M,movie(M,n)将按顺序放映矩阵M中存储的画面,并重复n次。

例x=-3:0.1:3;[x,y]=meshgrid(x);z=sin(x.*y).*exp(x.*y/5);for j=1:30mesh(cos(4*pi*j/30)*z,z)m(j)=getframeendmovie(m,10)例模拟6个移动物体x0=[150 85 150 145 130 0];y0=[140 85 155 50 150 0];q=[243/180*pi 236/180*pi 220.5/180*pi 159/180*pi 230/180*pi 52/180*pi]';t=0:0.05:2*pi;for i=0:280pause(0.01);for j=1:5axis([0 160 0 160]);fill(x0(j)+0.8*i*cos(q(j))+4*cos(t),y0(j)+0.8*i*sin(q(j))+4*sin(t),'b')hold on;endfill(x0(6)+0.8*i*cos(q(6))+4*cos(t),y0(6)+0.8*i*sin(q(6))+4*sin(t),'r')hold off;end2.其它例子在Matlab里利用图形的“EraseMode”属性可以实现显示新对象,擦除旧对象,而又不破坏背景图案。

Matlab-制作动画

Matlab-制作动画
11
保存动画的示例1
• 三维动画
[x,y,z]=peaks(30); %peaks产生一个凹凸有致的曲面 surf(x,y,z) %用X和Y定义x-y坐标网格,Z定义网格上每一点的高度,来生成三维曲面 axis([-3 3 -3 3 -10 10]) m=moviein(15); for i=1:15 view(-37.5+24*(i-1),30) m(:,i)=getframe; end movie(m)
surf(sin(2*pi*j/20)*Z,Z) F(j) = getframe; end movie(F,20)
15
其它动画示例程序
clear;clc; [x,y]=meshgrid(-8:.1:8); for j=1:20 f=@(x,y)(sin(sqrt((11-j)*(x.^2+y.^2)))./sqrt((11-j)*(x.^2+y.^2)+eps)); z=f(x,y); surf(x,y,z);shading interp; M(j) = getframe; if j==1 [I,map]=rgb2ind(M(j).cdata,256); imwrite(I,map,'out.gif','DelayTime',.1) else imwrite(rgb2ind(M(j).cdata,map),map,'out.gif','WriteMode','append','DelayTime',.1) end end movie2avi(M,'out.avi')
• 一般格式:
for i=1:n figure(i) F(i)=getframe; end; movie2avi(F,'...filename.avi')

matlab动态表白代码

matlab动态表白代码

matlab动态表白代码代码主要包含两个部分,第一部分是生成动态表白背景图像,第二部分是在背景图像中添加文字和动画效果。

首先,我们需要用matlab的图像处理函数生成一个粉色的渐变背景图像。

```matlabwidth = 640; % 设定背景图像宽度height = 480; % 设定背景图像高度bg = zeros(height,width,3); % 创建一个三维数组,用于存储背景图像for i = 1:heightfor j = 1:widthbg(i,j,1) = 255; % 设置红色通道值为255,即红色bg(i,j,2) = (i/height)*255; % 设置绿色通道值为渐变的值 bg(i,j,3) = (j/width)*255; % 设置蓝色通道值为渐变的值endend```接下来,我们要在背景图像中添加文字和动画效果。

这里我们使用matlab的文本处理和动画函数。

```matlabstr = '我喜欢你'; % 设定表白的内容textColor = [255 255 255]; % 设定文字颜色为白色xPos = 100; % 设定文字起始位置yPos = 200;for i = 1:length(str)textImg = insertText(bg,[xPosyPos],str(i),'FontSize',30,'TextColor',textColor,'BoxColor' ,'none','AnchorPoint','LeftBottom'); % 在背景图像中插入文字 for j = 1:10textImg = insertText(bg,[xPosyPos],str(i),'FontSize',30,'TextColor',textColor,'BoxColor' ,'none','AnchorPoint','LeftBottom'); % 重新插入文字textImg(yPos:yPos+5,xPos-5:xPos+30,:) = 255; % 添加闪烁效果imshow(textImg); % 显示动态效果pause(0.05); % 暂停0.05秒textImg(yPos:yPos+5,xPos-5:xPos+30,:) = 0; % 清除闪烁效果imshow(textImg); % 显示动态效果pause(0.05); % 暂停0.05秒endxPos = xPos + 30; % 调整下一个文字的起始位置end```这样,我们就完成了一个简单的matlab动态表白代码。

matlab凸轮摇杆机构设计动画代码

matlab凸轮摇杆机构设计动画代码

matlab凸轮摇杆机构设计动画代码一、引言凸轮摇杆机构是机械工程中常见的一种机构,其运动特性决定了它在很多领域都有广泛的应用,例如发动机、汽车、船舶等。

而在设计凸轮摇杆机构时,需要进行大量的计算和试验,这对于工程师来说是一个非常繁琐的过程。

但是,通过使用MATLAB软件可以大大简化这个过程,并且可以生成动画效果来更直观地展示凸轮摇杆机构的运动特性。

二、MATLAB凸轮摇杆机构设计代码以下是MATLAB代码实现凸轮摇杆机构的动画效果:1. 定义凸轮形状首先需要定义凸轮的形状,可以采用圆弧、正弦曲线等方式进行定义。

例如,在此我们采用正弦曲线进行定义:```matlabtheta = linspace(0,2*pi,100);r = 1+sin(theta);```2. 定义摇杆长度和连杆长度根据具体情况定义摇杆长度和连杆长度:```matlabL1 = 3;L2 = 6;```3. 计算连杆末端位置坐标根据凸轮形状和连杆长度,可以计算出连杆末端的位置坐标:```matlabx1 = r.*cos(theta);y1 = r.*sin(theta);x2 = x1 + L1*cos(theta);y2 = y1 + L1*sin(theta);```4. 计算摇杆末端位置坐标根据连杆长度和摇杆长度,可以计算出摇杆末端的位置坐标:```matlabtheta2 = asin((y2-L2)./L1);x3 = x2 - L2*cos(theta-theta2);y3 = y2 - L2*sin(theta-theta2);```5. 绘制动画效果最后,使用MATLAB的plot函数绘制凸轮摇杆机构的动画效果:```matlabfor i=1:length(x3)plot([0,x2(i),x3(i)],[0,y2(i),y3(i)],'k-o','linewidth',4,'MarkerFaceColor','r','MarkerSize',10)axis equalpause(0.01)end```三、MATLAB凸轮摇杆机构设计代码详解1. 步骤一:定义凸轮形状在此我们采用正弦曲线进行定义。

matlab动画制作例子

matlab动画制作例子

matlab动画制作例子
在MATLAB中,你可以使用`pause`和`drawnow`命令来制作动画。

以下是一个简单的例子,它展示了如何创建一个动画,该动画显示一个点在二维平面上沿一圆形路径移动。

```matlab
% 初始化参数
t = 0::2pi; % 时间向量
x = sin(t); % x坐标
y = cos(t); % y坐标
% 创建图形窗口
figure;
% 循环动画
for k = 1:length(t)
% 绘制当前点的位置
plot(x(k), y(k), 'ro');
% 添加标题和标签
title('点在圆上的移动');
xlabel('x');
ylabel('y');
% 暂停并更新图形,以便可以看到动画效果
pause();
drawnow;
end
```
这个脚本将会创建一个动画,显示一个点在二维平面上沿着一个圆形路径移动。

这个动画是通过在一个循环中绘制每个点的位置并暂停一段时间来创建的。

`drawnow`命令将立即更新图形窗口,使得你可以看到动画效果。

注意:MATLAB的版本和环境可能会影响动画的表现。

在一些环境中,可能需要使用不同的命令或参数才能获得最佳的动画效果。

matlab程序:两列波相向传播叠加波形图和动画

matlab程序:两列波相向传播叠加波形图和动画

clear,close all>> t=0t =>> %输入两组信号的振幅、波长和频率>> a1=input('振幅1=');b1=input('波长1=');v1=input('速度1=');振幅1=1波长1=6速度1=0.2>> a2=input('振幅2=');b2=input('波长2=');v2=input('速度2=');振幅2=2波长2=6速度2=0.2>> while t<=9x=0:0.001:10; %给出位置轴上10m,分为10000个点y1=a1*sin(2*pi/b1*(x+v1*t));y2=a2*cos(2*pi/b2*(x-v2*t));y3t=y1+y2;plot(x,y3t);hold on;t=t+1;end动画,两列波相向传播clear,close all>> t=0t =>> a1=input('振幅1=');b1=input('波长1=');v1=input('速度1=');振幅1=1波长1=2速度1=200>> a2=input('振幅2=');b2=input('波长2=');v2=input('速度2=');振幅2=2波长2=2速度2=300>> x=0:0.001:10; %给出位置轴上10m,分为10000个点y1=a1*sin(2*pi/b1*(x+v1*t));y2=a2*cos(2*pi/b2*(x-v2*t));y3t=y1+y2;>> M=moviein(60);>> clear t>> for t=1:60;plot(x,y3t);M(:,t)=getframe;end>> t=0t =>> a1=input('振幅1=');b1=input('波长1=');v1=input('速度1=');振幅1=1波长1=2速度1=200>> a2=input('振幅2=');b2=input('波长2=');v2=input('速度2=');振幅2=2波长2=2速度2=300>> x=0:0.001:10; %给出位置轴上10m,分为10000个点y1=a1*sin(2*pi/b1*(x+v1*t));y2=a2*cos(2*pi/b2*(x-v2*t));y3t=y1+y2;>> M=moviein(60);>> clear t>> for t=1:60; plot(x,y3t);M(:,t)=getframe; endmovie(M,30)。

matlab绘制动态三维心形代码(蛋疼的情人节奉献)

matlab绘制动态三维心形代码(蛋疼的情人节奉献)

Matlab绘制三维动态心形It’s OK to send a pic to your girlfriend on Valentine's Day情人节蛋疼玩意效果图:原始代码:%仅供参考,自助修改,原则上自己动手,要是非常强烈的要帮忙%可以联系我的,但愿我还在上面.Source code:%构造体积方程和坐标轴,画出图形;linspace(a,b,c)均匀生成介于a到b的c个值,c 的默认为100。

Meshgrid生成矩阵网格。

[X,Y,Z] = meshgrid(linspace(-3,3,101));%3D心型图方程如下;F = -X.^2.*Z.^3-(9/80).*Y.^2.*Z.^3+(X.^2+(9/4).*Y.^2+Z.^2-1).^3;hFigure = figure;sz = get(hFigure, 'Position');set(hFigure, 'Position', [sz(1)*sz(3) sz(2) *sz(3) sz(4)]);set(hFigure,'color','w', 'menu','none')hAxes = axes('Parent',hFigure,'NextPlot','add',...'DataAspectRatio',[1 1 1],...'XLim',[30 120],'YLim',[35 65],'ZLim',[30 75]);view([-39 30]);axis off% 制作出动态的隐形效果;hidden on% 画出网格,制作网格动态效果;% 快渲染心得背面:p = patch(isosurface(F,);set(p,'FaceColor','w','EdgeColor','w');% 构造Y-Z平面,,描完函数在该平面的点:for iX = [35 38 41 45 48 51 54 57 61 64 67]plane = reshape(F(:,iX,:),101,101);cData = contourc(plane,[0 0]);xData = iX.*ones(1,cData(2,1));plot3(hAxes,xData,cData(2,2:end),cData(1,2:end),'r');pause(.1), drawnowend% 构造X-Z平面,描完函数在该平面的点:for iY = [41 44 47 51 55 58 61]plane = reshape(F(iY,:,:),101,101);cData = contourc(plane,[0 0]);yData = iY.*ones(1,cData(2,1));plot3(hAxes,cData(2,2:end),yData,cData(1,2:end),'r');pause(.1), drawnowend% 构造X-Y平面,描完函数在该平面的点:for iZ = [36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 66 69 71] plane = F(:,:,iZ);cData = contourc(plane,[0 0]);startIndex = 1;if size(cData,2) > (cData(2,1)+1)startIndex = cData(2,1)+2;zData = iZ.*ones(1,cData(2,1));plot3(hAxes,cData(1,2:(startIndex-1)),...cData(2,2:(startIndex-1)),zData,'r');endzData = iZ.*ones(1,cData(2,startIndex));plot3(hAxes,cData(1,(startIndex+1):end),...cData(2,(startIndex+1):end),zData,'r');pause(.1), drawnowend%给三维心着色set(p,'FaceColor','r','EdgeColor','w');pause(.2);set(p,'FaceColor','w','EdgeColor','r');%函数已经画完,接下来为文字部分;pause(.2)%设置字体大小,粗细,位置等,以下是打出I (心型图) Wendy;text(7,50,70,'I', 'fontWeight','bold','FontAngle','italic','FontName','Trebuchet MS','fontsize',60,'Color','r')pause(.5)text(80,50,43,'Math', 'fontWeight','bold','FontAngle','italic','FontName','Trebuchet MS','fontsize',60,'Color','r')pause(.2)line([20 80],[50 50],[ ], 'color','r')line([50 50],[20 80],[ ], 'color','r')line([50 50],[50 50],[30 80], 'color','r')%制作者签名;text(40,60,30,'Made By William 8/8/2012', 'fontsize',8)text(35,45,30,'', 'fontsize',8)%制作心的动态效果% for i =1:28% set(p,'FaceColor','r','EdgeColor','w');% pause(.1);% set(p,'FaceColor','r','EdgeColor','r');% pause(.2)% end% refer to1%笛卡尔;x=0::2*pi;y=1-cos(x);polar(x,y)2%简单心;figure(2)ezplot(vectorize('17*x^2-16*abs(x)*y+17*y^2-225'));3%完美心;4figure(1)5N=200;6f1=@(x,y,z)(x.^2+(9/4)*y.^2+z.^2-1).^3-x.^2.*z.^3-(11/80)*y.^2.*z.^3;7[X,Y,Z]=meshgrid(linspace,,N));8set(patch(isosurface(X,Y,Z,f1(X,Y,Z),0)),'facecolor','r','edgecolor','none');9light10view(-10,24)11%心痕;12[x,y,z]=meshgrid(linspace,);13val=(x.^2 + (9/4)*y.^2 + z.^2 - 1).^3 - x.^2.*z.^3 - (1/9)*y.^2.*z.^3;%画出等值面14isosurface(x,y,z,val,0);% View 视角colormap 色图0-115axis equal;view(-10,10);colormap([1 ])16%花心;17clear;clc;close all18c=5;19t=linspace(-c,c);20[x,y]=meshgrid(t);21z=17*x.^2-16*abs(x).*y+17*y.^2-225;22pcolor(x,y,z);23shading interp24pause(2);25spinmap(10)26%构造体积方程和坐标轴,画出图形;27[X,Y,Z] = meshgrid(linspace(-3,3,101));2829%3D心型图方程如下;30 F = -X.^2.*Z.^3-(9/80).*Y.^2.*Z.^3+(X.^2+(9/4).*Y.^2+Z.^2-1).^3; 31hFigure = figure;32sz = get(hFigure, 'Position');33set(hFigure, 'Position', [sz(1)*sz(3) sz(2) *sz(3) sz(4)]);34set(hFigure,'color','w', 'menu','none')3536hAxes = axes('Parent',hFigure,'NextPlot','add',...37'DataAspectRatio',[1 1 1],...38'XLim',[30 120],'YLim',[35 65],'ZLim',[30 75]);39view([-39 30]);4142% 制作出动态的隐形效果;4344hidden on4546% 画出网格,制作网格动态效果;474849% 快渲染心得背面:5051p = patch(isosurface(F,);52set(p,'FaceColor','w','EdgeColor','w');5354% 构造Y-Z平面,,描完函数在该平面的点:55for iX = [35 38 41 45 48 51 54 57 61 64 67]56plane = reshape(F(:,iX,:),101,101);57cData = contourc(plane,[0 0]);58xData = iX.*ones(1,cData(2,1));59plot3(hAxes,xData,cData(2,2:end),cData(1,2:end),'k'); 60pause(.1), drawnow61end6263% 构造X-Z平面,描完函数在该平面的点:64for iY = [41 44 47 51 55 58 61]65plane = reshape(F(iY,:,:),101,101);66cData = contourc(plane,[0 0]);67yData = iY.*ones(1,cData(2,1));68plot3(hAxes,cData(2,2:end),yData,cData(1,2:end),'k'); 69pause(.1), drawnow7172% 构造X-Y平面,描完函数在该平面的点:73for iZ = [36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 66 69 71] 74plane = F(:,:,iZ);75cData = contourc(plane,[0 0]);76startIndex = 1;77if size(cData,2) > (cData(2,1)+1)78startIndex = cData(2,1)+2;79zData = iZ.*ones(1,cData(2,1));80plot3(hAxes,cData(1,2:(startIndex-1)),...81cData(2,2:(startIndex-1)),zData,'k');82end83zData = iZ.*ones(1,cData(2,startIndex));84plot3(hAxes,cData(1,(startIndex+1):end),...85cData(2,(startIndex+1):end),zData,'k');86pause(.1), drawnow87end。

遥控信号解调、动画设计的Matlab程序实现

遥控信号解调、动画设计的Matlab程序实现

% m 为密集 度. _s pa k为 函数 A K运 行后 的返 回值 . A K S 供 S
解 调
mR =ln t pa k : e gh( _ s )
t=1 m n : :
到 的返 回值 pak和密集度 m 为程序 d_s _s eak的参数 。
执 行 以下 两 条 指 令 :
p ak: S ( 1 1 0 0 0 1 0 1 】 2 ) _s A K 【 1 0 1 , 0 ;
a= dea k pak 2 ) s ( .s , O ; _
_
n=mn/ : m
P a s pa k :% 对 pa k P= b (_s ) _s 取绝对值 . 并赋值给 向量 P P
H =po (, _ s ltt p a k+2 5 b tA 一2 b ., P, ) . , ., , t P b :
二 、遥 控 信 号解 调
1 A K解 调 。 S
% 在 同一 副 图 中 显示 s tH L ̄ wi h . ) % 设 置 图 形 显 示 属性 eI , ie d 2 , t
% 对一个 周期的 P P数值取平均值。 并赋绘 向量 A


Hale Waihona Puke 2 6 1 00 1曩
_


日 一
维普资讯
A( ( 一1 ( i )%r n+1 : %m):a() )i i:
% 由得 出的 O或 1信息构 建原向量 A 供程序显示原指令 ,
ed n


引 言
调制后 的信号经发送端发送 出去 ,接收端接 收后将进行解
% 由此恢复 出原 向量 A的高低 电平 , 供程序显示调用

卫星绕地球旋转演示动画MATLAB程序

卫星绕地球旋转演示动画MATLAB程序

卫星绕地球旋转演示动画clc,clear,close allh=figure('numbertitle','off','name','卫星绕地球旋转演示动画');%设置标题名字s1=0:.01:2*pi;hold on;axis equal; %建立坐标系axis off; %除掉Axesr1=10; %地球到太阳的平均距离r2=3; %卫星的轨道半径w1=1; %设置地球公转角速度w2=12; %设置卫星绕地球公转角速度t=0; %初始时刻pausetime=.002; %设置视觉暂留时间sita1=0;sita2=0;%设置开始它们都在水平线上set(gcf,'doublebuffer','on') %消除抖动plot(-20,18,'color','r','marker','.','markersize',40);text(-17,18,'太阳');%对太阳进行标识plot(-20,16,'color','b','marker','.','markersize',20);text(-17,16,'地球');%对地球进行标识plot(-20,14,'color','w','marker','.','markersize',13);text(-17,14,'卫星');%对卫星进行标识plot(0,0,'color','r','marker','.','markersize',60);%画太阳plot(r1*cos(s1),r1*sin(s1));%画地球公转轨道set(gca,'xlim',[-20 20],'ylim',[-20 20]);p1=plot(r1*cos(sita1),r1*sin(sita1),'color','b','marker','.','markersize',30);%地球初始位置l1=plot(r1*cos(sita1)+r2*cos(s1),r1*sin(sita1)+r2*sin(s1));%画卫星绕地球的公转轨道p2x=r1*cos(sita1)+r2*cos(sita2);p2y=r1*sin(sita1)+r2*sin(sita2);p2=plot(p2x,p2y,'w','marker','.','markersize',20);%画卫星的初始位置orbit=line('xdata',p2x,'ydata',p2y,'color','r');%画卫星的运动轨迹while 1if ~ishandle(h),return,endset(p1,'xdata',r1*cos(sita1),'ydata',r1*sin(sita1));%设置地球的运动过程set(l1,'xdata',r1*cos(sita1)+r2*cos(s1),'ydata',r1*sin(sita1)+r2*sin(s1));%设置卫星绕地球的公转轨道的运动过程ptempx=r1*cos(sita1)+r2*cos(sita2);ptempy=r1*sin(sita1)+r2*sin(sita2);set(p2,'xdata',ptempx,'ydata',ptempy);%设置卫星的运动过程p2x=[p2x ptempx];p2y=[p2y ptempy];set(orbit,'xdata',p2x,'ydata',p2y);%设置卫星运动轨迹的显示过程sita1=sita1+w1*pausetime;%地球相对太阳球转过的角度sita2=sita2+w2*pausetime;%卫星相对地球转过的角度pause(pausetime); %视觉暂停drawnow %刷新屏幕,重绘end。

【原创】Matlab中动画的实现、制作和保存

【原创】Matlab中动画的实现、制作和保存

【原创】Matlab中动画的实现、制作和保存Matlab的确是一个很优秀的工程计算软件,除了强大的矩阵运算,仿真分析外,绘图功能也是相当的强大。

但是由于Matlab本身的多线程编程缺陷(所谓多线程,就是MATLAB没法同时执行多个回调,只能排队一个一个的按顺序运行,Timer对象除外,它是MATLAB中唯一能够执行多线程的方法),想要动态的画图,并且能够很好的在GUI中得到控制,还不是一件很容易的事情。

但是动画具有生动形象直观的好处,对我的教学、研究等都有不小的作用。

那好,我在这里勉为其难的介绍下Matlab中是如何制作动画的。

一、动画的制作Matlab中动画实现的方法主要有下面三种1.电影动画:从不同的视角拍下一系列对象的图形,并保存到变量中,然后按照一定的顺序像电影一样播放。

/thread-593-1-1.html2.擦除动画:画在图形窗口中按照一定的算法连续擦除和重绘图形对象,表现为动画,这个也是MATLAB中使用最多的方法。

/thread-240-1-1.html3.质点动画:用comet()等函数绘制彗星图,它能演示一个质点的运动/thread-594-1-1.html二、动画的保存下面再讲述下生成的动画如何保存。

动画保存,只有对电影动画而言才有意义,其他两种谈不上保存,因为他们都是实时的,眨眼就过的/thread-595-1-1.html三、有关动画制作的实验报告/thread-600-1-1.html四、更多动画实例更多的MATLAB实例等着大家自己去开发,我们这里提供了一些,大家可以依葫芦画瓢一样学习下,希望起一个抛砖引玉的作用/thread-596-1-1.html。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
hf6=fill([-2.5+s 0+s 2.5+s],[-7 -4.5 -7],'g');
hf7=fill([-2+s 0+s 2+s],[-4.5 -2.5 -4.5],'g');
pause(0.2);
hf8=fill([-1.4+s -1.4+s 1.4+s 1.4+s],[-10 -6 -6 -10],'y');
end
delete(hf4);
delete(hf41);
delete(hf2);%树生长
delete(hf3);
hf5=fill([-1.2 -1.2 1.2 1.2],[-10 -7 -7 -10],'y');
hf6=fill([-2.5 0 2.5],[-7 -4.5 -7],'g');
clear all; close all;
t1=linspace(0,2*pi);
x1=-9;y1=0;r1=1;
hf1=fill(r1*cos(t1)+x1,r1*sin(t1)+y1,'r');%画太阳
hold on; axis([-10,10,-10,10]);axis off
hf2=fill([-1 -1 1 1],[-10 -8 -8 -10],'y');%画树
hf7=fill([-2 0 2],[-4.5 -2.5 -4.5],'g');
hf1=fill(r1*cos(t1)+x1,r1*sin(t1)+y1,'r');%第二天白天
i=0;sita1=pi;
for i=0:6;
tc=rand(1,3);
title('日复一日,小树慢慢慢慢地长大。。。。','color',tc,'fontweight','bold');
X=text(-4,4,'然','color','r','fontsize',30);
pause(1);
Y=text(2,4,'而','color','r','fontsize',30);
pause(1);
Z1='利益冲昏了我们的头脑';
for i=1:10
Z(i)=text(-10+i*1.7,-4,Z1(i),'color','r','fontsize',30);
pause(0.5);
end
pause(1);
delete(X);
delete(Y);
delete(Z);
delete(W);
hf1=fill(r1*cos(0)+x1,r1*sin(0)+y1,'r');
delete(h11);
pause(0.4);
delete(h10);
x2=0;y2=0;r2=9;
x1=r2*cos(sita1-pi/6*i)+x2;
y1=r2*sin(sita1-pi/6*i)+y2;
set(hf1,'xdata',r1*cos(t1)+x1,'ydata',r1*sin(t1)+y1);
pause(0.5);
end
delete(hf1);
hf9=fill([-3+s 0+s 3+s],[-6 -3 -6],'g');
hf10=fill([-2.5+s 0+s 2.5+s],[-3 -0.5 -3],'g');
hf11=fill([-2+s 0+s 2+s],[-0.5 1.5 -0.5],'g');
h6(i+1,j+1)=hf6;
pause(0.5);
end
delete(hf1);
i=0;sita1=pi;%第二天晚上
hf4=fill(r1*cos(t1)+x1,r1*sin(t1)+y1,'b')
x11=-8;
hf41=fill(r1*cos(t1)+x11,r1*sin(t1)+y1,'k');
for i=0:6;%wanshang
set(gcf, 'color', 'w');
x2=0;y2=0;r2=9;
x1=r2*cos(sita1-pi/6*i)+x2;
y1=r2*sin(sita1-pi/6*i)+y2;
set(hf1,'xdata',r1*cos(t1)+x1,'ydata',r1*sin(t1)+y1);
y1=r2*sin(sita1-pi/6*i)+y2;
set(hf1,'xdata',r1*cos(t1)+x1,'ydata',r1*sin(t1)+y1);
for j=0:3
s=randint(1,1,[-1-3*j,1+3*j]);
hf5=fill([-1.2+s -1.2+s 1.2+s 1.2+s],[-10 -7 -7 -10],'y');
i=0;sita1=pi;
for i=0:6;
tc=rand(1,3);
a=title('经过了很多很多年,树终于长成了一片森林','color',tc,'fontweight','bold');
set(gcf, 'color', 'w');
x2=0;y2=0;r2=9;
x1=r2*cos(sita1-pi/6*i)+x2;
end
delete(hf5);%树生长
delete(hf6);
delete(hf7);
hf8=fill([-1.4 -1.4 1.4 1.4],[-10 -6 -6 -10],'y');
hf9=fill([-3 0 3],[-6 -3 -6],'g');
hf10=fill([-2.5 0 2.5],[-3 -0.5 -3],'g');
tc=rand(1,3);
title('日复一日,小树慢慢慢慢地长大。。。。','color',tc,'fontweight','bold');
set(gcf, 'color', 'k');
x2=0;y2=0;r2=9;
x1=r2*cos(sita1-pi/6*i)+x2;
x11=8*cos(sita1-pi/6*i)+x2;
title('日复一日,小树慢慢慢慢地长大。。。。','color',tc,'fontweight','bold');
set(gcf, 'color', 'k');
x2=0;y2=0;r2=9;
x1=r2*cos(sita1-pi/6*i)+x2;
x11=8*cos(sita1-pi/6*i)+x2;
h7(i+1,j+1)=hf7;
h9(i+1,j+1)=hf9;
h10(i+1,j+1)=hf10;
h11(i+1,j
end
delete(hf1);
delete(a);
W=fill([-10 -10 10 10],[-10 10 10 -10],'k');
pause(0.4);
delete(h9);
pause(0.4);
delete(h7);
pause(0.4);
delete(h6);
pause(1);
delete(hf99);
delete(hf1010);
delete(hf1111);
pause(2);
W=fill([-10 -10 10 10],[-10 10 10 -10],'k');
Z2='保护树木,保卫我们的家园!';
for i=1:13
text(-8+i*2-13*(i>5),4+(i>5)*(-8),Z2(i),'color','w','fontsize',30);
pause(0.5);
end
hf11=fill([-2 0 2],[-0.5 1.5 -0.5],'g');
hf99=hf9;hf1010=hf10;hf1111=hf11;
delete(hf4);
delete(hf41);
pause(1);
hf1=fill(r1*cos(t1)+x1,r1*sin(t1)+y1,'r');
相关文档
最新文档