有趣的MATLAB动画演示程序汇总
matlab动画-流星雨
![matlab动画-流星雨](https://img.taocdn.com/s3/m/36d80d05b52acfc789ebc920.png)
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三维绘图命令和演示资料](https://img.taocdn.com/s3/m/374ff642caaedd3383c4d3ef.png)
三维绘图1 三维绘图指令2 基本XYZ立体绘图命令mesh和plot是三度空间立体绘图的基本命令,mesh可画出立体网状图,plot则可画出立体曲面图,两者产生的图形都会依高度而有不同颜色。
下列命令可画出由函数形成的立体网状图:x=linspace(-2, 2, 25); % 在x轴上取25点y=linspace(-2, 2, 25); % 在y轴上取25点[xx,yy]=meshgrid(x, y); % xx和yy都是25x25的矩阵zz=xx.*exp(-xx.^2-yy.^2); % 计算函数值,zz也是21x21的矩阵mesh(xx, yy, zz); % 画出立体网状图●surf和mesh的用法类似:x=linspace(-2, 2, 25); % 在x轴上取25点y=linspace(-2, 2, 25); % 在y轴上取25点[xx,yy]=meshgrid(x, y); % xx和yy都是25x25的矩阵zz=xx.*exp(-xx.^2-yy.^2); % 计算函数值,zz也是25x25的矩阵surf(xx, yy, zz); % 画出立体曲面图●peaks为了方便测试立体绘图,MATLAB提供了一个peaks函数,可产生一个凹凸有致的曲面,包含了三个局部极大点及三个局部极小点,其方程式为:要画出此函数的最快方法即是直接键入peaks:peaksz = 3*(1-x).^2.*exp(-(x.^2) - (y+1).^2) - 10*(x/5 - x.^3 - y.^5).*exp(-x.^2-y.^2) -1/3*exp(-(x+1).^2 - y.^2)●我们亦可对peaks函数取点,再以各种不同方法进行绘图。
meshz可将曲面加上围裙:[x,y,z]=peaks;meshz(x,y,z);●waterfall可在x方向或y方向产生水流效果:[x,y,z]=peaks;waterfall(x,y,z);●下列命令产生在y方向的水流效果:[x,y,z]=peaks;waterfall(x',y',z');●meshc同时画出网状图与等高线:[x,y,z]=peaks;meshc(x,y,z);●surfc同时画出曲面图与等高线:[x,y,z]=peaks;surfc(x,y,z);●contour3画出曲面在三度空间中的等高线:contour3(peaks, 20);●contour画出曲面等高线在XY平面的投影:contour(peaks, 20);plot3可画出三度空间中的曲线:t=linspace(0,20*pi, 501);plot3(t.*sin(t), t.*cos(t), t);亦可同时画出两条三度空间中的曲线:t=linspace(0, 10*pi, 501);plot3(t.*sin(t), t.*cos(t), t, t.*sin(t), t.*cos(t), -t);3 三维绘图的主要功能绘制三维线图绘制等高线图绘制伪彩色图绘制三维网线图绘制三维曲面图、柱面图和球面图绘制三维多面体并填充颜色(一)三维线图plot3 ——基本的三维图形指令调用格式:plot3(x,y,z) —— x,y,z是长度相同的向量plot3(X,Y,Z) —— X,Y,Z是维数相同的矩阵plot3(x,y,z,s) ——带开关量plot3(x1,y1,z1,’s1’,x2,y2,z2,’s2’,…)二维图形的所有基本特性对三维图形全都适用。
matlab有趣的代码
![matlab有趣的代码](https://img.taocdn.com/s3/m/d523d44730b765ce0508763231126edb6f1a7621.png)
matlab有趣的代码Matlab是一种用于科学计算和数据可视化的强大工具。
它不仅可以解决数学问题,还可以进行图像处理、信号处理、机器学习等等。
在这篇文章中,我将为大家介绍一些有趣的Matlab代码,并解释它们的功能和应用。
1. "音乐可视化" - 利用Matlab可以将音频信号转换为可视化效果。
你可以使用Matlab的音频处理库来读取音频文件,并将其转换为时域或频域信号。
然后,你可以使用Matlab的绘图功能将这些信号可视化成波形图或频谱图。
2. "图像滤镜效果" - Matlab提供了丰富的图像处理工具箱,可以实现各种有趣的图像滤镜效果。
比如,你可以使用Matlab的边缘检测算法来突出图像的边缘特征,或者使用模糊滤镜来模糊图像。
这些滤镜效果可以使图像更加有趣和艺术化。
3. "模拟物理实验" - Matlab可以用来模拟各种物理实验,比如弹簧振子、摆钟等。
你可以使用Matlab的数值计算功能来解决物理方程,并使用Matlab的绘图功能将模拟结果可视化。
这样,你就可以通过代码实现自己的物理实验,并观察其行为和变化。
4. "游戏开发" - Matlab不仅可以用于科学计算和数据处理,还可以用于游戏开发。
你可以使用Matlab的图形库来创建简单的游戏界面,并使用Matlab的控制语句和逻辑运算来实现游戏的逻辑。
这样,你就可以通过编写Matlab代码来开发自己的小游戏。
5. "数据可视化" - Matlab提供了丰富的绘图和可视化工具,可以帮助你更好地理解和展示数据。
你可以使用Matlab的绘图函数来绘制各种统计图表,比如柱状图、折线图、散点图等。
这些图表可以帮助你更直观地理解数据的分布和趋势。
6. "机器学习应用" - Matlab提供了强大的机器学习工具箱,可以帮助你构建和训练机器学习模型。
matlab动态绘图Animation
![matlab动态绘图Animation](https://img.taocdn.com/s3/m/5fc01539905f804d2b160b4e767f5acfa1c78345.png)
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综合题:采用动画的形式书写本人的名字,具体字体自定](https://img.taocdn.com/s3/m/334c45839fc3d5bbfd0a79563c1ec5da50e2d6de.png)
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动态爱心代码](https://img.taocdn.com/s3/m/f3d94235773231126edb6f1aff00bed5b9f37305.png)
Matlab动态爱心代码简介动态爱心代码是一种使用Matlab编程语言实现的动画效果,能够在屏幕上以爱心形状展示出美丽的动态效果。
本文将详细介绍Matlab动态爱心代码的实现原理和步骤。
实现原理Matlab动态爱心代码的实现原理基于数学方程。
通过使用心形曲线的参数方程,我们可以在Matlab中绘制出具有爱心形状的曲线。
然后,我们利用Matlab的动画功能,将这个曲线进行平移、旋转和缩放等变换,从而实现动态效果。
实现步骤以下将详细介绍实现Matlab动态爱心代码的步骤:步骤一:绘制心形曲线1.创建一个新的Matlab脚本文件。
2.使用参数方程来定义心形曲线的x和y坐标:–x = 16 * sin(t)^3–y = 13 * cos(t) - 5 * cos(2t) - 2 cos(3t) - cos(4t)3.设置参数t的取值范围,通常选择0到2*pi之间的一段范围。
4.使用plot函数绘制心形曲线:plot(x, y)5.使用axis函数设置坐标轴的显示范围,使爱心曲线充满整个屏幕。
6.使用title函数设置图像的标题,如“动态爱心”。
步骤二:实现动画效果1.使用hold on命令,保持之前绘制的爱心曲线不被删除。
2.使用for循环来不断更新曲线的位置和大小,从而实现动态效果。
3.在循环中,分别使用平移、旋转和缩放等变换函数来更新爱心曲线的坐标。
4.为了使动画效果更加平滑,可以在每次循环之间添加适当的延时。
5.循环结束之后,使用hold off命令来释放资源。
示例代码下面是一个示例的Matlab动态爱心代码:% 步骤一:绘制心形曲线t = 0:0.01:2*pi;x = 16 * sin(t).^3;y = 13 * cos(t) - 5 * cos(2*t) - 2 * cos(3*t) - cos(4*t);plot(x, y);axis([-20 20 -20 20]);title('动态爱心');% 步骤二:实现动画效果hold on;for scale = 0.1:0.1:2% 平移tx = 5 * scale;ty = -3 * scale;x_new = x + tx;y_new = y + ty;% 旋转angle = scale * pi/4;x_new = x_new * cos(angle) - y_new * sin(angle);y_new = x_new * sin(angle) + y_new * cos(angle);% 缩放x_new = x_new * scale;y_new = y_new * scale;plot(x_new, y_new);pause(0.1);endhold off;结论通过以上步骤,我们可以实现一个简单但美丽的Matlab动态爱心代码,展示出令人惊叹的动画效果。
Matlab-制作动画
![Matlab-制作动画](https://img.taocdn.com/s3/m/c1155da55ebfc77da26925c52cc58bd63086930f.png)
保存动画的示例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动画演示教学](https://img.taocdn.com/s3/m/b9c0e70079563c1ec5da7180.png)
维普资讯
22 1
福
建 电
脑
20 0 8年第 6期
Ma a 画演 示教 学 t b动 l
张
【 摘
萸 .张敬华 z
(1 . 福建农林 大学 计算机 与信 息学院 福建 福州 3 0 0 . 50 2 2 福建农林大学 计算机与信息 学院 福 建 福州 30 0 2、 50 2 要】 :介 绍了 Ma a l fb的功能与特点 , 阐述 了Mal t b在 高等数 学教 学中的作 用. 以高等数 学教 学中遇到的 问题为 a 并
例 , 细讨 论 了 MA L B应 用 于 高 等数 学 的教 学模 式 。 详 TA
【 关键词】 :Ma a ; t b 高等数 学教 学; l 可视化
0 Ma a 、 n b的动 画功 能与 特 点 ; i m了 1 MAIAB是 Ma1 rs 司 开发 的新 一 代 的科 学 与 工 程 计 例 1 l , 1 t l k公 Wo 算 软件 。 已经 成 为全 球 应 用 最 广 泛 最 流行 的软 件 之 一 . a a 自 m tb l 在 课 本 中 . 于 关 产 生之 日起 就具 有 方便 的数 据 可 视 化 功能 . 以将 向量 和 距 阵 用 l —lX i Sl a r i
MATLAB动画演示效果
![MATLAB动画演示效果](https://img.taocdn.com/s3/m/5c679b19964bcf84b9d57b2e.png)
MATLAB动画演示效果一%曲柄滑块机构hf=figure('name','曲柄滑块机构');set(hf,'color','g');hold onaxis([-6,6,-4,4]);grid onaxis('off');xa0=-5;%活塞左顶点坐标xa1=-2.5;%活塞右顶点坐标xb0=-2.5;%连杆左顶点坐标xb1=2.2;%连杆右顶点坐标x3=3.5;%转轮坐标y3=0;%转轮坐标x4=xb1;%设置连杆头的初始位置横坐标y4=0;%设置连杆头的初始位置纵坐标x5=xa1;y5=0;x6=x3;%设置连轴初始横坐标y6=0;%设置连轴初始纵坐标a=0.7;b=0.7c=0.7a1=line([xa0;xa1],[0;0],'color','b','linestyle','-','linewidth',40); %设置活塞a3=line(x3,y3,'color',[0.5 0.6 0.3],'linestyle','.','markersize',300);%设置转轮a2=line([xb0;xb1],[0;0],'color','black','linewidth',10);%设置连杆a5=line(x5,y5,'color','black','linestyle','.','markersize',40);%设置连杆活塞连接头a4=line(x4,y4,'color','black','linestyle','.','markersize',50);%设置连杆连接头a6=line([xb1;x3],[0;0],'color','black','linestyle','-','linewidth',10);a7=line(x3,0,'color','black','linestyle','.','markersize',50);%设置运动中心a8=line([-5.1;-0.2],[0.7;0.7],'color','y','linestyle','-','linewidth',5);%设置汽缸壁a9=line([-5.1;-0.2],[-0.72;-0.72],'color','y','linestyle','-','linewidth',5);%设置汽缸壁a10=line([-5.1;-5.1],[-0.8;0.75],'color','y','linestyle','-','linewidth',5);%设置汽缸壁a11=fill([-5,-5,-5,-5],[0.61,0.61,-0.61,-0.61],[a,b,c]);%设置汽缸气体len1=4.8;%连杆长len2=2.5;%活塞长r=1.3;%运动半径dt=0.015*pi;t=0;while 1t=t+dt;if t>2*pit=0;endlena1=sqrt((len1)^2-(r*sin(t))^2);%连杆在运动过程中横轴上的有效长度rr1=r*cos(t);%半径在运动过程中横轴上的有效长度xaa1=x3-sqrt(len1^2-(sin(t)*r)^2)-(r*cos(t));%活塞在运动过程中的右顶点坐标位置xaa0=xaa1-2.5;%%活塞在运动过程中的左顶点坐标位置x55=x3-cos(t)*r;%连杆在运动过程中横坐标位置y55=y3-sin(t)*r;%连杆在运动过程中纵坐标位置set(a4,'xdata',x55,'ydata',y55);%设置连杆顶点运动set(a1,'xdata',[xaa1-2.5;xaa1],'ydata',[0;0]);%设置活塞运动set(a2,'xdata',[xaa1;x55],'ydata',[0;y55]);set(a5,'xdata',xaa1);%设置活塞与连杆连接头的运动set(a6,'xdata',[x55;x3],'ydata',[y55;0]);set(a11,'xdata',[-5,xaa0,xaa0,-5]);%设置气体的填充set(gcf,'doublebuffer','on');%消除震动drawnow;end文献出处:/blog/static/13485835420091124584320/MATLAB动画效果演示二MATLAB 2009-12-24 17:15:48 阅读135 评论0 字号:大中小订阅%理想弹簧阵子简谐运动%Clearrectangle('position',[12,8.5,2,0.3],'FaceColor',[0.5,0.3,0.4]);axis([0,15,-1,10]);%画顶板hold onplot([13,13],[7,8.5],'r','linewidth',2);%画直线y=2:.2:7;M=length(y);x=12+mod(1:M,2)*2;x(1)=13;x(end-3:end)=13;D=plot(x,y);%弹簧C=0:.1:2*pi;r=0.35;t1=r*sin(C);F1=fill(13+r*cos(C),2+t1,'r');% 球set(gca,'ytick',[0:2:9]);set(gca,'yticklabels',num2str([-1:3]'));plot([0,15],[3.3,3.3],'black');H1=plot([0,13],[3.3,3.3],'y');% 句柄[黄线]Q=plot(0,3.8,'color','r');% 运动曲线;td=[];yd=[];T=0;text(2,9,'理想中的弹簧振子简谐振动','fontsize',16);set(gcf,'doublebuffer','on');while T<12;pause(0.2);Dy=(3/2-1/2*sin(pi*T))*1/2;Y=-(y-2)*Dy+7;Yf=Y(end)+t1;td=[td,T];yd=[yd,Y(end)];set(D,'ydata',Y);set(F1,'ydata',Yf,'facecolor',rand(1,3));set(H1,'xdata',[T,13],'ydata',[Y(end),Y(end)]);set(Q,'xdata',td,'ydata',yd) ;T=T+0.1;end文献出处:/blog/static/1348583542009112451548632/%台球完全碰撞模拟示例axis([-1.6,12.6,-1.6,10.7])%确定坐标轴参数范围hold on %保持当前图形及轴系的所有特性fill([-2,13,13,-2],[-2,-2,11,11],[0,1,0]);%填充底座背景fill([-1,12,12,-1],[-1,-1,10,10],[0,0.5,0]);%填充底座背景ball1=line(0,5,'color','r','marker','.','erasemode','xor','markersize',60);%设置小球颜色,大小,线条的擦拭方式ball2=line(8,9,'color','g','marker','.','erasemode','xor','markersize',60);%设置小球颜色,大小,线条的擦拭方式ball3=line(-1,-1,'color','g','marker','.','erasemode','xor','markersize',80);%设置左下角圆的颜色,大小,线条的擦拭方式ball4=line(12,-1,'color','g','marker','.','erasemode','xor','markersize',80);%设置右下角圆的颜色,大小,线条的擦拭方式ball3=line(-1,10,'color','g','marker','.','erasemode','xor','markersize',80);%设置左上角圆的颜色,大小,线条的擦拭方式ball4=line(12,10,'color','g','marker','.','erasemode','xor','markersize',80);%设置右上角圆的颜色,大小,线条的擦拭方式title('完全非弹碰在模拟台球比赛的应用', 'color','r','fontsize',15);%图形标题pause(1)%设定暂停时间的长度t=0;dt=0.005;%设制初始数值while t<7.2%设定横轴范围t=t+dt;%设制横轴计算公式y=1/2*t+5;%设制纵轴计算公式set(ball1,'xdata',t,'ydata',y)%设制球的运动drawnow;%刷新屏幕end %结束while t<8.8%设定横轴范围t=t+dt;%设制横轴计算公式y=1/2*t+5;%设制纵轴计算公式set(ball2,'xdata',t,'ydata',y)%设制球的运动drawnow;%刷新屏幕end %结束while t<11.5%设定横轴范围t=t+dt;%设制横轴计算公式y=-1/2*t+14.3;%设制纵轴计算公式set(ball2,'xdata',t,'ydata',y)%设制球的运动drawnow;%刷新屏幕end%结束while t>-0.5%设制横轴范围t=t-dt;%设制横轴计算公式y=1/2*t+2.90;%设制纵轴计算公式set(ball2,'xdata',t,'ydata',y)%设制球的运动drawnow;%刷新屏幕end%结束while t<6%设制横轴范围t=t+dt;%设制横轴计算公式y=-1/2*t+2.40;%设制纵轴计算公式set(ball2,'xdata',t,'ydata',y)%设制球的运动drawnow;%刷新屏幕end%结束while t<11.5%设制横轴范围t=t+dt;%设制横轴计算公式y=1/2*t-3.0;%设制纵轴计算公式set(ball2,'xdata',t,'ydata',y)%设制球的运动drawnow;%刷新屏幕end%结束while t>-2%设制横轴范围t=t-dt;%设制横轴计算公式y=-t*7.65/12.9+9.57;%设制纵轴计算公式set(ball2,'xdata',t,'ydata',y)%设制球的运动drawnow;%刷新屏幕end%结束text(2,5,'好!进球了啊!!!恭喜!','fontsize',16,'color','r'); %显示字幕的颜色和大小文献出处:/blog/static/134858354200911245185379/MATLAB动画效果演示四MATLAB 2009-12-24 17:22:18 阅读50 评论2 字号:大中小订阅%能量守恒验证示例fill([6,7,7,6],[5,5,0,0],[0,0.5,0]);%右边竖条的填充hold on; %保持当前图形及轴系的所有特性fill([2,6,6,2],[3,3,0,0],[0,0.5,0]);%左边竖条的填充hold on;% 保持当前图形及轴系的所有特性t1=0:pi/60:pi;plot(4-2*sin(t1-pi/2),5-2*cos(t1-pi/2));%绘制中间的凹弧图形grid;%添加网格线axis([0,9,0,9]);%定义坐标轴的比例%axis('off');%关闭所有轴标注,标记,背景fill([1,2,2,1],[5,5,0,0],[0,0.5,0]);%中间长方形的填充hold on;% 保持当前图形及轴系的所有特性title('31608118');%定义图题x0=6;y0=5;head1=line(x0,y0,'color','r','linestyle','.','erasemode','xor','markersize',30);head2=line(x0,y0,'color','r','linestyle','.','erasemode','xor','markersize',50); %设置小球颜色,大小,线条的擦拭方式t=0;%设置小球的初始值dt=0.001;%设置运动周期t1=0;%设置大球的初始值dt1=0.001;while 1%条件表达式t=t+dt;x1=9-1*t;y1=5;x3=6;y3=5;if t>0x2=6;y2=5;%设置小球的运动轨迹endif t>2.8t=t+dt;a=sin(t-3);x1=6.1;y1=5.1;x3=4-2*sin(1.5*a);y3=5-2*cos(1.5*a);%设置大球的运动轨迹endset(head1,'xdata',x1,'ydata',y1);%设置球的运动set(head2,'xdata',x3,'ydata',y3);drawnow;end文献出处:/blog/static/1348583542009112452218157/。
matlab的有趣程序
![matlab的有趣程序](https://img.taocdn.com/s3/m/6f1841befd0a79563c1e72e4.png)
曲线之美——塞尔曲线计算机科学与技术一班周星在我们的电脑中有这样一个屏幕保护程序叫做贝塞尔曲线,不知道大家留意过没有?因为这个学期我既学了c语言,又学了matlab,所以对编程很感兴趣。
我认为自己编出屏幕保护程序来既是一种学习知识的方式,也是一种开拓智力、放松心情的休闲方式。
上网查了贝塞尔曲线的数学表示式之后,我就开始用自己可怜的一点matlab知识解决它(其实本学期matlab学的挺多的,只是本人掌握的少,辜负了老师的期望)。
网上的给出的贝塞尔曲线的定义如下:在图形图像编程时,我们常常需要根据一系列已知点坐标来确定一条光滑曲线。
其中有些曲线需要严格地通过所有的已知点,而有些曲线却不一定需要。
在后者中,比较有代表性的一类曲线是贝塞尔曲线(Bézier Splines)。
在历史上,研究贝塞尔曲线的人最初是按照已知曲线参数方程来确定四个点的思路设计出这种矢量曲线绘制法。
涕淌为了向大家介绍贝塞尔曲线的公式,也故意把问题的已知和所求颠倒了一下位置:如果已知一条曲线的参数方程,系数都已知,并且两个方程里都含有一个参数t,它的值介于0、1之间,表现形式如下所示:x(t) = ax * t ^ 3 + bx * t ^ 2 + cx * t + x0y(t) = ay * t ^ 3 + by * t ^ 2 + cy * t + y0由于这条曲线的起点(x0,y0)是已知的,我们可以用以下的公式来求得剩余三个点的坐标:x1 = x0 + cx / 3x2 = x1 + ( cx + bx ) / 3x3 = x0 + cx + bx + axy1 = y0 + cy / 3y2 = y1 + ( cy + by ) / 3y3 = y0 + cy + by + ay你细细观察一下就知道了,无论方程的已知和所求是什么,总是有六个未知数,并且我们总能找到六个等式(记住(x0,y0)总是已知的),也就是说,上面的方法是完全可逆的,因此我们可以根据四个已知点坐标来反求曲线参数公式的系数。
matlab程序:两列波相向传播叠加波形图和动画
![matlab程序:两列波相向传播叠加波形图和动画](https://img.taocdn.com/s3/m/7f4d3a60561252d380eb6eaa.png)
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动画制作例子](https://img.taocdn.com/s3/m/5c6099be951ea76e58fafab069dc5022aaea468e.png)
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中的视频处理与动画制作方法](https://img.taocdn.com/s3/m/160a60347dd184254b35eefdc8d376eeaeaa1706.png)
Matlab中的视频处理与动画制作方法引言:Matlab是一种强大的数值计算和编程平台,广泛应用于科学和工程领域。
除了常见的数值计算和数据分析任务外,Matlab还提供了丰富的图像和视频处理功能。
在本文中,我们将重点介绍Matlab中的视频处理和动画制作方法。
无论你是要进行视频处理,还是想制作生动的动画,Matlab都能满足你的需求。
一、视频处理方法1. 视频读取与播放想要进行视频处理,首先我们需要将视频加载到Matlab中。
Matlab提供了多种读取视频文件的函数,如VideoReader函数可以方便地读取各种视频格式的文件。
读取视频后,我们可以使用implay函数来播放视频,方便我们对视频进行预览。
2. 视频帧提取与处理在视频处理中,我们通常需要对视频的每一帧进行处理。
Matlab提供了逐帧提取和处理视频的方法。
我们可以使用readFrame函数来逐帧读取视频,并对每一帧进行相应的处理。
例如,我们可以将视频的每一帧转换为灰度图像,或者使用图像滤波算法对每一帧进行平滑处理。
3. 视频合并与剪辑有时候我们需要将多个视频合并成一个视频,或者对一个视频进行剪辑。
Matlab提供了一系列函数来实现这些功能。
我们可以使用writeVideo函数来将多个视频合并成一个新的视频文件,也可以使用VideoWriter对象来对视频进行剪辑,截取其中的一个时间段。
4. 视频特效与转换除了对视频的基本处理外,Matlab还提供了多种视频特效和转换的方法。
例如,我们可以使用imresize函数对视频进行缩放,使用imrotate函数对视频进行旋转,还可以使用imwarp函数对视频进行形变。
这些功能都大大拓展了我们对视频的处理和加工能力。
二、动画制作方法1. 图形绘制与动画Matlab不仅提供了对视频进行处理的功能,还能方便地制作各种动画。
我们可以使用plot函数绘制曲线,使用scatter函数绘制散点图,还可以使用surf函数绘制三维曲面。
有趣的MATLAB1.游戏程序
![有趣的MATLAB1.游戏程序](https://img.taocdn.com/s3/m/39f2fef0185f312b3169a45177232f60dccce745.png)
有趣的MATLAB1.游戏程序MATLAB游戏程序目录1.空格游戏 (2)2.华容道 (3)3.凑五子棋 (14)4.2048 (19)5.俄罗斯方块 (24)1.空格游戏function pintu1()A = gen();G = [1 2 3;4 5 6;7 8 0];drawmap(A);while 1[xpos,ypos] = ginput(1);col = ceil(xpos);row = 3-ceil(ypos)+1;num = A(row,col);if row>1&A(row-1,col)==0A(row-1,col) = num;A(row,col) = 0;endif row<3&A(row+1,col)==0A(row+1,col) = num;A(row,col) = 0;endif col>1&A(row,col-1)==0A(row,col-1) = num;A(row,col) = 0;endif col<3&A(row,col+1)==0A(row,col+1) = num;A(row,col) = 0;enddrawmap(A)zt = abs(A-G);if sum(zt(:))==0msgbox('恭喜您成功完成!')breakendendfunction drawmap(A)clf;hold online([0 3],[0 0],'linewidth',4);line([3 3],[0 3],'linewidth',4);line([0 3],[3 3],'linewidth',4);line([0 0],[0 3],'linewidth',4);for i = 1:3for j = 1:3drawrect([j-1 3-i],[j 3-i],[j 3-i+1],[j-1 3-i+1],'y',A(i,j)); endendaxis equalaxis offfunction drawrect(x1,x2,x3,x4,color,num)x = [x1(1) x2(1) x3(1) x4(1)];y = [x1(2) x2(2) x3(2) x4(2)];fill(x,y,color)if num==0text(0.5*(x1(1)+x2(1)),0.5*(x1(2)+x4(2)),' ','fontsize',24)elsetext(0.5*(x1(1)+x2(1))-0.05,0.5*(x1(2)+x4(2)),num2str(num),'fontsize',24) endfunction y = gen()y = inf*ones(1,9);for i = 1:9while 1a = randint(1,1,9);if isempty(find(y==a))y(i) = a;breakendendendy = reshape(y,3,3);2.华容道function huarongdao()A = [2 1 1 3;2 1 1 3;4 6 6 5;4 7 7 5;7 0 0 7];drawmap(A)while 1if A(5,2)==1&A(5,3)==1ch = menu('曹操成功逃出华容道!如果要继续玩,按“是”,否则按“否”','是','否');switch chcase 1huarongdao();case 2returnendend[xpos,ypos] = ginput(1);col = ceil(xpos);row = 5-ceil(ypos)+1;juese = A(row,col);switch juesecase 1%点击了曹操[I,J] = find(A==1);rm = max(I);rn = min(I);lm = max(J);ln = min(J);%判断是否能向左移if ln>1&isequalm(A([rn,rm],ln-1),[0;0]) A([rn,rm],ln-1)=[1;1];A([rn,rm],lm)=[0;0];drawmap(A)end%判断是否能向右移if lm<4&isequalm(A([rn,rm],lm+1),[0;0]) A([rn,rm],lm+1)=[1;1];A([rn,rm],ln)=[0;0];drawmap(A)end%判断是否能向下移if rn>1&isequalm(A(rn-1,[ln,lm]),[0,0]) A(rn-1,[ln,lm])=[1,1];A(rn+1,[ln,lm])=[0,0];drawmap(A)end%判断是否能向上移if rm<5&isequalm(A(rm+1,[ln,lm]),[0,0]) A(rm+1,[ln,lm])=[1,1];A(rm-1,[ln,lm])=[0,0];drawmap(A)endcase 2% 点击了黄忠[I,J] = find(A==2);rm = max(I);rn = min(I);lm = max(J);ln = min(J);%判断是否能向左移if ln>1&isequalm(A([rn,rm],ln-1),[0;0]) A([rn,rm],ln-1)=[2;2];A([rn,rm],lm)=[0;0];drawmap(A)end%判断是否能向右移if lm<4&isequalm(A([rn,rm],lm+1),[0;0]) A([rn,rm],lm+1)=[2;2];A([rn,rm],ln)=[0;0];drawmap(A)endif rn>1&A(rn-1,ln)==0if rm<5&A(rm+1,ln)==0%如果又能上移又能下移,则要点击的部位ch = menu('请选择移到的方向:','上','下')switch chcase 1%上移A(rn-1,ln) = 2;A(rn+1,ln) = 0;drawmap(A)case 2%下移A(rm+1,ln) = 2;A(rm-1,ln) = 0;drawmap(A)endelse%只能上移A(rn-1,ln) = 2;A(rn+1,ln) = 0;drawmap(A)endelseif rm<5&A(rm+1,ln)==0A(rm+1,ln) = 2;A(rm-1,ln) = 0;drawmap(A)endcase 3%张飞[I,J] = find(A==3);rm = max(I);rn = min(I);lm = max(J);ln = min(J);%判断是否能向左移if ln>1&isequalm(A([rn,rm],ln-1),[0;0])A([rn,rm],ln-1)=[3;3];A([rn,rm],lm)=[0;0];drawmap(A)end%判断是否能向右移if lm<4&isequalm(A([rn,rm],lm+1),[0;0])A([rn,rm],lm+1)=[3;3];A([rn,rm],ln)=[0;0];drawmap(A)endif rn>1&A(rn-1,ln)==0if rm<5&A(rm+1,ln)==0%如果又能上移又能下移,则要点击的部位ch = menu('请选择移到的方向:','上','下')switch chcase 1%上移A(rn-1,ln) = 3;A(rn+1,ln) = 0;drawmap(A)case 2%下移A(rm+1,ln) = 3;A(rm-1,ln) = 0;endelse%只能上移A(rn-1,ln) = 3;A(rn+1,ln) = 0;drawmap(A)endelseif rm<5&A(rm+1,ln)==0A(rm+1,ln) = 3;A(rm-1,ln) = 0;endcase 4%马超[I,J] = find(A==4);rm = max(I);rn = min(I);lm = max(J);ln = min(J);%判断是否能向左移if ln>1&isequalm(A([rn,rm],ln-1),[0;0])A([rn,rm],ln-1)=[4;4];A([rn,rm],lm)=[0;0];drawmap(A)end%判断是否能向右移if lm<4&isequalm(A([rn,rm],lm+1),[0;0])A([rn,rm],lm+1)=[4;4];A([rn,rm],ln)=[0;0];drawmap(A)endif rn>1&A(rn-1,ln)==0if rm<5&A(rm+1,ln)==0%如果又能上移又能下移,则要点击的部位ch = menu('请选择移到的方向:','上','下')switch chcase 1%上移A(rn-1,ln) = 4;A(rn+1,ln) = 0;drawmap(A)case 2%下移A(rm+1,ln) = 4;endelse%只能上移A(rn-1,ln) = 4;A(rn+1,ln) = 0;drawmap(A)endelseif rm<5&A(rm+1,ln)==0A(rm+1,ln) = 4;A(rm-1,ln) = 0;drawmap(A)endcase 5%赵云[I,J] = find(A==5);rm = max(I);rn = min(I);lm = max(J);ln = min(J);%判断是否能向左移if ln>1&isequalm(A([rn,rm],ln-1),[0;0]) A([rn,rm],ln-1)=[5;5];A([rn,rm],lm)=[0;0];drawmap(A)end%判断是否能向右移if lm<4&isequalm(A([rn,rm],lm+1),[0;0]) A([rn,rm],lm+1)=[5;5];A([rn,rm],ln)=[0;0];drawmap(A)endif rn>1&A(rn-1,ln)==0if rm<5&A(rm+1,ln)==0%如果又能上移又能下移,则要点击的部位ch = menu('请选择移到的方向:','上','下')switch chcase 1%上移A(rn-1,ln) = 5;A(rn+1,ln) = 0;drawmap(A)case 2%下移A(rm-1,ln) = 0;drawmap(A)endelse%只能上移A(rn-1,ln) = 5;A(rn+1,ln) = 0;drawmap(A)endelseif rm<5&A(rm+1,ln)==0A(rm+1,ln) = 5;A(rm-1,ln) = 0;drawmap(A)endcase 6%关羽[I,J] = find(A==6);rm = max(I);rn = min(I);lm = max(J);ln = min(J);%判断是否能向上移if rn>1 & isequalm(A(rn-1,[ln,lm]),[0,0])A(rn-1,[ln,lm])=[6,6];A(rn,[ln,lm])=[0,0];drawmap(A)end%判断是否能向下移if rm<5&isequalm(A(rm+1,[ln,lm]),[0,0])A(rm+1,[ln,lm])=[6,6];A(rm,[ln,lm])=[0,0];drawmap(A)endif ln>1&A(rn,ln-1)==0if lm<4&A(rm,lm+1)==0%如果又能左移又能右移,则要点击的部位ch = menu('请选择移到的方向:','左','右')switch chcase 1%左移A(rm,ln-1) = 6;A(rm,ln+1) = 0;drawmap(A)case 2%右移A(rm,lm+1) = 6;A(rm,lm-1) = 0;drawmap(A)endelse%只能左移A(rm,ln-1) = 6;A(rm,ln+1) = 0;drawmap(A)endelseif lm<4&A(rm,lm+1)==0A(rm,lm+1) = 6;A(rm,lm-1) = 0;drawmap(A)endcase 7 %小卒if row>1&A(row-1,col)==0 % 上if col>1&A(row,col-1)==0 % 左ch = menu('请选择移到的方向:','上','左') switch chcase 1A(row-1,col) = 7;A(row,col) = 0;drawmap(A)case 2A(row,col-1) = 7;A(row,col) = 0;drawmap(A)endelseif row<5&A(row+1,col)==0% 下ch = menu('请选择移到的方向:','上','下') switch chcase 1A(row-1,col) = 7;A(row,col) = 0;drawmap(A)case 2A(row+1,col) = 7;A(row,col) = 0;drawmap(A)endelseif col<4&A(row,col+1)==0 %右switch chcase 1A(row-1,col) = 7;A(row,col) = 0;drawmap(A)case 2A(row,col+1) = 7;A(row,col) = 0;drawmap(A)endelse %只能向上A(row-1,col) = 7;A(row,col) = 0;drawmap(A)endelseif col>1&A(row,col-1)==0%左if row<5&A(row+1,col)==0%下ch = menu('请选择移到的方向:','左','下') switch chcase 1A(row,col-1) = 7;A(row,col) = 0;drawmap(A)case 2A(row+1,col) = 7;A(row,col) = 0;drawmap(A)endelseif col<4&A(row,col+1)==0%右switch chcase 1A(row,col-1) = 7;A(row,col) = 0;drawmap(A)case 2A(row,col+1) = 7;A(row,col) = 0;drawmap(A)endelse%只能向左A(row,col-1) = 7;A(row,col) = 0;drawmap(A)endelseif row<5&A(row+1,col)==0%下if col<4&A(row,col+1)==0%右ch = menu('请选择移到的方向:','下','右') switch chcase 1A(row+1,col) = 7;A(row,col) = 0;drawmap(A)case 2A(row,col+1) = 7;A(row,col) = 0;drawmap(A)endelse%只能向下A(row+1,col) = 7;A(row,col) = 0;drawmap(A)endelseif col<4&A(row,col+1)==0%只能向右A(row,col+1) = 7;A(row,col) = 0;drawmap(A)endendendfunction drawmap(A)clfhold on%曹操[I J] = find(A==1);x1 = min(J)-1;x2 = max(J);y1 = 5-(min(I)-1);y2 = 5-max(I);drawrect([x1,y1],[x2,y1],[x2,y2],[x1,y2],'r')text(0.5*(x1+x2)-0.5,0.5*(y1+y2),'曹操','fontsize',28)% 黄忠[I,J] = find(A==2);x1 = min(J)-1;x2 = max(J);y1 = 5-(min(I)-1);y2 = 5-max(I);drawrect([x1,y1],[x2,y1],[x2,y2],[x1,y2],'y')text(0.5*(x1+x2)-0.26,0.5*(0.5*(y1+y2)+y1),'黄','fontsize',28)text(0.5*(x1+x2)-0.26,0.5*(0.5*(y1+y2)+y2),'忠','fontsize',28) % 张飞[I,J] = find(A==3);x1 = min(J)-1;x2 = max(J);y1 = 5-(min(I)-1);y2 = 5-max(I);drawrect([x1,y1],[x2,y1],[x2,y2],[x1,y2],'y')text(0.5*(x1+x2)-0.26,0.5*(0.5*(y1+y2)+y1),'张','fontsize',28) text(0.5*(x1+x2)-0.26,0.5*(0.5*(y1+y2)+y2),'飞','fontsize',28) % 马超[I,J] = find(A==4);x1 = min(J)-1;x2 = max(J);y1 = 5-(min(I)-1);y2 = 5-max(I);drawrect([x1,y1],[x2,y1],[x2,y2],[x1,y2],'y')text(0.5*(x1+x2)-0.26,0.5*(0.5*(y1+y2)+y1),'马','fontsize',28) text(0.5*(x1+x2)-0.26,0.5*(0.5*(y1+y2)+y2),'超','fontsize',28) % 赵云[I,J] = find(A==5);x1 = min(J)-1;x2 = max(J);y1 = 5-(min(I)-1);y2 = 5-max(I);drawrect([x1,y1],[x2,y1],[x2,y2],[x1,y2],'y')text(0.5*(x1+x2)-0.26,0.5*(0.5*(y1+y2)+y1),'赵','fontsize',28) text(0.5*(x1+x2)-0.26,0.5*(0.5*(y1+y2)+y2),'云','fontsize',28) % 关羽[I,J] = find(A==6);x1 = min(J)-1;x2 = max(J);y1 = 5-(min(I)-1);y2 = 5-max(I);drawrect([x1,y1],[x2,y1],[x2,y2],[x1,y2],'y')text(0.5*(x1+0.5*(x1+x2))-0.26,0.5*(y1+y2),'关','fontsize',28) text(0.5*(0.5*(x1+x2)+x2)-0.26,0.5*(y1+y2),'羽','fontsize',28) %小卒[I,J] = find(A==7);for i = 1:length(I)x1 = J(i)-1;x2 = J(i);y1 = 5-(I(i)-1);y2 = 5-I(i);drawrect([x1,y1],[x2,y1],[x2,y2],[x1,y2],'g')text(0.5*(x1+x2)-0.26,0.5*(y1+y2),'卒','fontsize',28)end% 画背景line([0 4],[0 0],'color','b','linewidth',4)line([0 4],[5 5],'color','b','linewidth',4)line([0 0],[0 5],'color','b','linewidth',4)line([4 4],[0 5],'color','b','linewidth',4)for i = 1:4line([0 4],[i i],'color','b','linestyle','--')endfor i = 1:3line([i i],[0 5],'color','b','linestyle','--')endaxis equalaxis([0 4 0 5])axis offfunction drawrect(x1,x2,x3,x4,color)x = [x1(1) x2(1) x3(1) x4(1)];y = [x1(2) x2(2) x3(2) x4(2)];fill(x,y,color)3.凑五子棋function [ ] = five()global a h m1 n1 m2 n2 t h1 h2 h3 color score hsc ha sshf=figure('resize','off','name','five',...'position',[360 280 560 420],'numbertitle','off');set(gcf,'menubar','none','color',[0.3 0.3 0.3])set(gca,'position',[0.2300 0.1100 0.7750 0.8150]) set(gca,'xlim',[0,9],'ylim',[0,9])set(ha,'xtick',[],'ytick',[],'box','on')set(ha,'color',[0.7 0.6,0.6])set(ha,'DataAspectRatio',[1 1 1],'PlotBoxAspectRatio',[1 1 1]) x=repmat([0;9],1,9);y=[1:9;1:9];line(x,y,'color','k')line(y,x,'color','k')hst=uicontrol('style','text','string','Score','fontsize',30,...'units','normal','position',[0.02,0.55,0.26,0.14],'parent',hf,...'ForegroundColor','w','backgroundcolor',[0.3 0.3 0.3],...'fontweight','bold');hsc=uicontrol('style','text','string','0','fontsize',24,...'units','normal','position',[0.02,0.4,0.26,0.14],'parent',hf,...'ForegroundColor','w','backgroundcolor',[0.3 0.3 0.3],...'fontweight','bold');hbt=uicontrol('style','pushbutton','string','Restart','fontsize',1 8,...'units','normal','position',[0.02,0.16,0.26,0.14],'parent',hf,... 'fontweight','bold','callback',@restart);color=[...1 1 0;1 0 1;0 1 1;1 0 0;0 1 0;0 0 1;0.7 0.3 0;];h1=annotation('ellipse',[0.04,0.84,0.06,0.08],'facecolor','k'); h2=annotation('ellipse',[0.12,0.84,0.06,0.08],'facecolor','k'); h3=annotation('ellipse',[0.2,0.84,0.06,0.08],'facecolor','k'); set(ha,'buttondownfcn',@select2)initializefunction initialize()global a h m1 n1 m2 n2 t h1 h2 h3 color score hsc ssa=zeros(9);h=zeros(9)*NaN;m1=[];n1=[];m2=[];n2=[];ss=0;k=rs(1:81,5);t=ceil(rand(1,5)*7);a(k)=t;[m,n] = ind2sub([9,9],k);y=9.5-m;x=n-0.5;for p=1:5h(k(p))=line(x(p),y(p),'marker','o','markersize',24,...'markerfacecolor',color(t(p),:),'markeredgecolor','none',... 'buttondownfcn',@select1);endt=ceil(rand(1,3)*7);set(h1,'facecolor',color(t(1),:))set(h2,'facecolor',color(t(2),:))set(h3,'facecolor',color(t(3),:))function [k]=rs(s,n);for m=1:nt=ceil(rand*length(s));k(m)=s(t);s(t)=[];endfunction select1(src,eventdata)global a h m1 n1n1=ceil(get(src,'xdata'));m1=ceil(9-get(src,'ydata'));set(h(~isnan(h)),'markeredgecolor','none')set(src,'markeredgecolor','w')function select2(src,eventdata)global a h m1 n1 m2 n2 t h1 h2 h3 color score hsc ha ss if isempty(m1) || isempty(n1)returnendcp=get(src,'currentpoint');n2=ceil(cp(1,1));m2=ceil(9-cp(1,2));if a(m2,n2)returnendb=~a;b(m1,n1)=1;b=bwlabel(b,4);if b(m1,n1)~=b(m2,n2)enda(m2,n2)=a(m1,n1);a(m1,n1)=0;h(m2,n2)=h(m1,n1);h(m1,n1)=NaN;set(h(m2,n2),'xdata',n2-0.5,'ydata',9.5-m2,'markeredgecolor','none') m1=[];n1=[];judgement;if sum(sum(~a))<3hgo=text(1,4.5,'Game Over','fontsize',36,'fontweight',...'bold','parent',src);pause(3)delete(hgo);delete(h(~isnan(h)))set(hsc,'string','0')initialize;returnendif ~ssnew;endfunction judgementglobal a h m1 n1 m2 n2 t h1 h2 h3 color score hsc ha ssb=logical(zeros(9,9));ss=0;left=0;right=0;up=0;down=0;lu=0;rd=0;ld=0;ru=0;while n2-left-1>0 && a(m2,n2-left-1)==a(m2,n2)left=left+1;endwhile n2+right+1<10 && a(m2,n2+right+1)==a(m2,n2)right=right+1;endwhile m2-up-1>0 && a(m2-up-1,n2)==a(m2,n2)up=up+1;endwhile m2+down+1<10 && a(m2+down+1,n2)==a(m2,n2) down=down+1;endwhile n2-lu-1>0 && m2-lu-1>0 && a(m2-lu-1,n2-lu-1)==a(m2,n2) lu=lu+1;endwhile n2+rd+1<10 && m2+rd+1<10 && a(m2+rd+1,n2+rd+1)==a(m2,n2) rd=rd+1;endwhile n2-ld-1>0 && m2+ld+1<10 && a(m2+ld+1,n2-ld-1)==a(m2,n2) ld=ld+1;endwhile n2+ru+1<10 && m2-ru-1>0 && a(m2-ru-1,n2+ru+1)==a(m2,n2) ru=ru+1;endif left+right+1>=5b(m2,n2-left:n2+right)=1;endif up+down+1>=5b(m2-up:m2+down,n2)=1;endif lu+rd+1>=5ind=sub2ind([9,9],m2-lu:m2+rd,n2-lu:n2+rd);b(ind)=1;endif ld+ru+1>=5ind=sub2ind([9,9],m2+ld:-1:m2-ru,n2-ld:n2+ru);b(ind)=1;endif sum(sum(b))a(b)=0;delete(h(b));h(b)=NaN;score=score+sum(sum(b));set(hsc,'string',num2str(score))ss=1;endfunction newglobal a h m1 n1 m2 n2 t h1 h2 h3 color score hsc hak=rs(find(~a),3);a(k)=t;[mt,nt] = ind2sub([9,9],k);y=9.5-mt;x=nt-0.5;for p=1:3h(k(p))=line(x(p),y(p),'marker','o','markersize',24,...'markerfacecolor',color(t(p),:),'markeredgecolor','none',... 'buttondownfcn',@select1);endfor p=1:3m2=mt(p);n2=nt(p);judgement;endif sum(sum(~a))==0hgo=text(1,4.5,'Game Over','fontsize',36,'fontweight',... 'bold','parent',ha);pause(3)delete(hgo);delete(h(~isnan(h)))set(hsc,'string','0')initialize;returnendt=ceil(rand(1,3)*7);set(h1,'facecolor',color(t(1),:))set(h2,'facecolor',color(t(2),:))set(h3,'facecolor',color(t(3),:))function restart(src,eventdata)global a h m1 n1 m2 n2 t h1 h2 h3 color score hsc ha ssdelete(h(~isnan(h)))set(hsc,'string','0')initialize;4.2048function g2048(action)global totalscore flag score_board if nargin<1figure_h=figure;set(figure_h,'Units','points')set(figure_h,'UserData',figure_h); totalscore=0;flag=0;score_board=zeros(1,16);action='initialize';endswitch action。
卫星绕地球旋转演示动画MATLAB程序
![卫星绕地球旋转演示动画MATLAB程序](https://img.taocdn.com/s3/m/30388ca55ef7ba0d4a733bf0.png)
卫星绕地球旋转演示动画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动画演示程序汇总](https://img.taocdn.com/s3/m/17cb8884a0c7aa00b52acfc789eb172dec639951.png)
有趣的MATLAB动画演示程序汇总1.弹球动画:这个动画演示程序使用MATLAB的图形绘制函数和动态更新机制,模拟了一个弹球在一个封闭空间内运动的过程。
程序中,可以调整弹球的初始位置和速度等参数,并可观察到弹球在墙壁上反弹的效果。
这个演示程序能够帮助您理解物体运动的基本原理,以及力学中的碰撞和反弹等概念。
2.二维粒子系统动画:这个动画演示程序模拟了一个二维粒子系统,在一个有限的空间内随机运动。
程序中,可以设置粒子的初始位置、速度和质量等参数,并观察到粒子之间的相互作用和碰撞效果。
这个演示程序可以帮助您理解粒子系统的行为和特性,以及分子动力学等领域的基本原理。
3.波动方程动画:这个动画演示程序模拟了一个一维波动方程,通过离散化和时间步进的方法,计算并绘制了波动在弦上的传播过程。
程序中,可以设置波动的初始条件和边界条件,并观察到波动在弦上的传播和反射效果。
这个演示程序可以帮助您理解波动方程的解析和数值解法,并探索波动现象的性质和特点。
4.生物传感器动画:这个动画演示程序模拟了一个生物传感器的工作过程,通过MATLAB的图形绘制和动态更新机制,实时显示传感器的信号和响应。
程序中,可以设置传感器的初始参数和外部刺激,观察到传感器的信号变化和输出响应。
这个演示程序可以帮助您理解生物传感器的原理和工作机制,以及MATLAB在生物工程和生物医学领域的应用。
5.火焰模拟动画:这个动画演示程序模拟了一个火焰的形成和变化过程,通过MATLAB 的图形绘制函数和颜色映射机制,实时显示火焰的形状和颜色。
程序中,可以设置火焰的初始温度和燃烧速率等参数,并观察火焰的扩散和燃烧效果。
这个演示程序可以帮助您理解火焰的形成和传播机制,以及热传导和化学反应等物理过程。
以上是一些有趣的MATLAB动画演示程序汇总。
这些演示程序通过MATLAB的强大功能和易于使用的编程接口,帮助您探索和理解各种科学和工程问题。
您可以通过自己编写代码或者利用MATLAB提供的函数和工具,进一步扩展和修改这些演示程序,以满足您的需求和兴趣。
《Matlab动画技术》课件
![《Matlab动画技术》课件](https://img.taocdn.com/s3/m/5d704f41bfd5b9f3f90f76c66137ee06eff94efa.png)
动画基础
动画的定义及作用
掌握动画的基础概念,明确动画在实际开发中 的应用场景。
图片绘制原理
了解图片绘制原理,为制作动画提供理论基础。
动画实现方式
1 动态更新图形
2 渐进式图形生成
学会如何动态更新图形,使图像呈现连 贯而流畅的动画效果。
掌握渐进式图形生成技术,为实现高质 量的动画效果提供必要的手段。
掌握如何使用Matlab实现图片的特效效果,为动画增加更多的创意和魅力。
总结与展望
应用前景
Matlab动画技术在航天、汽车、电子、医疗 等领域具有广泛的应用前景。
发展趋势
Matlab动画技术将越来越智能化,从单纯的 图形效果到具有实时交互等更强的特性。
Matlab动画技术
本PPT课件将详细介绍Matlab动画技术的实现方式、算法以及实例演示,希望 对您了解动画技术有所帮助。
介绍
了解Matlab动画技术的应用场景和重要性,将为您在实际开发中提供全新的思路和方法。
前置知识
Matlab基础语法
掌握Matlab的基础语法,才能更好地实现 动画效果。
Matlab绘图基础
动画算法
1
插值算法
了解插值算法的基础原理,学会如何使用插值算法实现动画效果。
2
运动学模型
掌握运动学模型的基本知识,为实现复杂的动画效果提供必要的理论支撑。
三维动画
三维图形绘制
了解三维图形绘制的基础技术,为制作三维动 画打下坚实的基础。
三维动实现
掌握三维动画的基本原理,能够实现具有三维 效果的动画效果。
动画导出
视频文件导出
掌握如何将动画导出为视频文件,使其可 以在不同平台上播放。
MATLAB中的动画设计
![MATLAB中的动画设计](https://img.taocdn.com/s3/m/9e59b00acc175527072208b0.png)
• 产生一个顺着曲线轨迹运动的质点来操作 • 使用comet、comet3函数 • 最简单的动画产生方式
MATLAB中的动画设计——质点动画
设计步骤
• step1:求解出质点完整的运动轨迹坐标x,y和z • step2:使用comet或者comet3直接绘制动点
MATLAB中的动画设计——质点动画
当创建了一系列动画帧后,可利用movie函数播放这些动画帧。该函数的主要格式有: (1)movie(M),将矩阵M中的动画帧播放一次 (2)movie(M,n),将矩阵M中的动画帧播放n次 (3)movie(M,n,fps),将矩阵M中的动画帧以每秒fps帧的速度播放n次
MATLAB中的动画设计——电影动画
设计步骤
• step1:调用getframe函数生成每个帧。该函数返回一个列矢量, 利用这个矢量,就可以创建一个电影动画矩阵。 • step2:调用movie函数按照指定的速度和次数运行该电影动画。 • step3:调用movie2avi函数可以将矩阵中的一系列动画帧转换 成avi视频文件。这样,即使脱离了matlab环境也可播放动画。
MATLAB中的动画设计——电影动画
2、电影动画
• 从不同的视角拍下一系列对象的图形,并保存到变量中,然 后按照一定的顺序像电影一样播放。 • 使用getframe、movie函数。
getframe函数可以捕捉动画帧,并保存到矩阵中。该函数的主要格式有: (1)F=gefframe,从当前图形框中得到动画帧 (2)F=gefframe(h),从图形句柄h中得到动画帧 (3)F=getframe(h,rect),从图形句柄h的指定区域rec中得到动画帧
程序结构
MATLAB中的动画设计——电影动画
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MATLAB 动画演示程序汇总1.弹性蹦球演示程序figure(1);%定义函数axis([-5.1,5,-0.05,1.05]);%绘制二维图形hold on;%保持当前图形及轴系所有的特性axis('off');%覆盖坐标刻度,并填充背景%通过填充绘出台阶及两边的挡板fill([4.12,4.22,4.22,4.12],[-0.05,-0.05,1.05,1.05],'y');fill([-5,-3.2,-3.2,-5],[-0.05,-0.05,0,0],'g');fill([-3.2,-2.8,-2.8,-3.2],[-0.05,-0.05,0.2,0.2],'g');fill([-3.2,-1.4,-1.4,-3.2],[0.2,0.2,0.25,0.25],'g');fill([-1.4,-1,-1,-1.4],[0.2,0.2,0.45,0.45],'g');fill([-1.4,0.4,0.4,-1.4],[0.45,0.45,0.5,0.5],'g');fill([0.4,0.8,0.8,0.4],[0.45,0.45,0.7,0.7],'g');fill([0.4,2.0,2.0,0.4],[0.7,0.7,0.75,0.75],'g');fill([2.0,2.3,2.3,2.0],[-0.05,-0.05,0.75,0.75],'g');fill([2.3,4.12,4.12,2.3],[-0.05,-0.05,0,0],'g');%x2=line([-5,5],[0.25,0.25],'color','g','linestyle','-','markersize',50)%设置台阶边框线,颜色,擦试方式%line([-5,5],[0.5,0.5],'color','b','linestyle','-', 'markersize',50)%设置球与地面接触面的颜色,擦试方式%line([-5,5],[0.75,0.75],'color','b','linestyle','-','markersize',50)%设置球与地面接触面的颜色,擦试方式head=line(-5,1,'color','r','linestyle','.','erasemode','xor','markersize',60);%设置小球颜色,大小,线条和擦试方式%body=line(-5,1,'color','b','linestyle','-','erasemode','none'); %描绘轨迹线%设置初始条件while 1t=4;dt=0.001;w=0;dw=0.001;w=0;%设置球弹起的初始位置%设置球弹起的高度while t<=4.12t=dt+t;if w<=1w=dw+w;elsew=-1;endy=(-w*w)+1;set(head,'xdata',t,'ydata',y);%设置球的运动%set(body,'xdata',t,'ydata',y);%描绘轨迹线drawnow;end %结束程序w=0;%设置球弹起的初始位置%设置球弹起的高度while t>=2.11t=t-dt;if w<=1w=dw+w;elsew=-1;endy=(-w*w)+1;set(head,'xdata',t,'ydata',y);%设置球的运动%set(body,'xdata',t,'ydata',y);%描绘轨迹线drawnow;end %结束程序w=0;%设置球弹起的初始位置%设置球弹起的高度while t>=1.11t=t-dt;if w<=1w=dw+w;elsew=-1;endy=(-w*w)/4+1;set(head,'xdata',t,'ydata',y);%设置球的运动%set(body,'xdata',t,'ydata',y);%描绘轨迹线drawnow;end %结束程序w=-0.71;%设置球弹起的初始位置%设置球弹起的高度while t>=-0.62t=t-dt;if w<=1w=dw+w;elsew=-1;endy=(-w*w)/2+1;set(head,'xdata',t,'ydata',y);%设置球的运动%set(body,'xdata',t,'ydata',y);%描绘轨迹线drawnow;end %结束程序w=-0.71;%设置球弹起的初始位置%设置球弹起的高度while t>=-2.31t=t-dt;if w<=1w=dw+w;elsew=-1;endy=(-w*w)/2+0.75;set(head,'xdata',t,'ydata',y);%设置球的运动%set(body,'xdata',t,'ydata',y);%描绘轨迹线drawnow;end %结束程序w=-0.71;%设置球弹起的初始位置%设置球弹起的高度while t>=-4t=t-dt;if w<=1w=dw+w;elsew=-1;endy=(-w*w)/2+0.5;set(head,'xdata',t,'ydata',y);%设置球的运动%set(body,'xdata',t,'ydata',y);%描绘轨迹线drawnow;end %结束程序for i=0:0.01:200%设置延时y=i+2;if(y>199)endendend2.嫦娥奔月演示程序figure('name','嫦娥一号与月亮、地球关系');%设置标题名字s1=[0:.01:2*pi];hold on;axis equal;%建立坐标系axis off % 除掉Axesr1=10;%月亮到地球的平均距离r2=3;%嫦娥一号到月亮的平均距离w1=1;%设置月亮公转角速度w2=12%设置嫦娥一号绕月亮公转角速度t=0;%初始时刻为0pausetime=.002;%设置暂停时间sita1=0;sita2=0;%设置开始它们都在水平线上set(gcf,'doublebuffer','on') %消除抖动plot(-20,18,'color','r','marker','.','markersize',40);text(-17,18,'地球');%对地球进行标识p1=plot(-20,16,'color','b','marker','.','markersize',20);text(-17,16,'月亮');%对月亮进行标识p1=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','.','markers ize',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 1set(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); %暂停一会drawnowend3.曲柄连杆机构充气球动画演示程序hf=figure('name','打气筒吹气球');set(hf,'color','g');axis([-10,10,-4,4]);hold onaxis off; %除掉坐标xa0=-2.5;%活塞左顶点坐标xa1=-1.8;%活塞右顶点坐标xb0=-2;%连杆左顶点坐标xb1=5;%连杆右顶点坐标x3=5.6;%转轮坐标y3=0;%转轮坐标x4=xb1;%设置连杆头的初始位置横坐标y4=0;%设置连杆头的初始位置纵坐标x5=xa1;y5=0;x6=x3;%设置连轴初始横坐标y6=0;%设置连轴初始纵坐标a=0.7;b=0.7c=0.7a1=line([xa0;xa1],[0;0],'color','m','linestyle','-','linewidth',20); %设置活塞a8=line([-2.7;2.3],[0.3;0.3],'color','b','linestyle','-','linewidth', 5);%设置打气筒a9=line([-2.6;2.3],[-0.3;-0.3],'color','b','linestyle','-','linewidth ',5);%设置打气筒a10=line([-2.6;-2.6],[-0.1;-0.37],'color','b','linestyle','-','linewi dth',5);%设置打气筒a11=line([2.0;2.0],[0.1;0.37],'color','b','linewidth',5);%设置打气筒a12=line([2.0;2.0],[-0.1;-0.37],'color','b','linewidth',5);%设置打气筒a13=line([-2.6;-2.6],[0.1;0.37],'color','b','linestyle','-','linewidt h',5);%设置打气筒a14=line([-2.7;-2.7],[0.1;-0.1],'color','b','linestyle','-','linewidt h',9);%设置气筒嘴a16=line([-3.2;-3.2],[0.1;-0.1],'color','r','linestyle','-','linewidt h',25);%设置气筒嘴a2=line([xb0;xb1],[0;0],'color','m','linewidth',5);%设置连杆a5=line(x5,y5,'color','black','linestyle','.','markersize',25);%设置连杆活塞连接头a4=line(x4,y4,'color','black','linestyle','.','markersize',25);%设置连杆连接头a6=line([xb1;x3],[0;0],'color','b','linestyle','-','linewidth',7);%设置连杆连接轴a7=line(x3,0,'color','m','linestyle','.','markersize',50);%设置运动中心a3=line(x3,y3,'color' ,[0.5 0.60.3],'linestyle','.','markersize',85);%设置手轮len1=6.8;%连杆长len2=0.7;%活塞长r=1.3;%运动半径dd=0.01;d=-4;plot(d,0,'color','r','marker','.','markersize',10);pausetime=.0001s=0;ds=1;t=0;dt=0.015*pi;while t<=15.68t=t+dt;drawnow;lena1=sqrt((len1)^2-(r*sin(2*t))^2);%连杆在运动过程中横轴上的有效长度rr1=r*cos(t);%半径在运动过程中横轴上的有效长度xaa1=x3-sqrt(len1^2-(sin(2*t)*r)^2)-(r*cos(2*t));%活塞在运动过程中的右顶点坐标位置xaa0=xaa1-2;%%活塞在运动过程中的左顶点坐标位置x55=x3-cos(2*t)*r;%连杆在运动过程中横坐标位置y55=y3-sin(2*t)*r*0.32;%连杆在运动过程中纵坐标位置set(a4,'xdata',x55,'ydata',y55);%设置连杆顶点运动set(a1,'xdata',[xaa1-0.2;xaa1],'ydata',[0;0]);%设置活塞运动set(a2,'xdata',[xaa1;x55],'ydata',[0;y55]);set(a5,'xdata',xaa1);%设置活塞与连杆连接头的运动set(a6,'xdata',[x55;x3],'ydata',[y55;0]);if (sign(y55-y3)>0)s=s+ds;d=d-dd;if s>200s=0;d=0;endset(gcf,'doublebuffer','on');%消除震动plot(d,0,'color','r','marker','.','markersize',s);%画气球set(gcf,'doublebuffer','on') %消除抖动pause(pausetime); %暂停一会drawnow;endendx=[-8.0 -7.0 -6.0 -5.5 -4.5 -3.5 -3.7 -3 -4 -5.5 -6.5 -7.5 -9.1 -7.3 ]; y=[-1.8 -1.2 -2.8 -1.5 -2.8 -0.5 -0.7 0.7 0.2 1.5 0.8 1.2 1.9 0.5]; fill(x,y,'r');text(-6,0,'pa','fontsize',22);4.打桩机动画演示程序clear; %清除工作区clc; %清除命令区figure('name','武工院打桩机); %设置标题axis ([0 ,10,0,10]); %建立坐标系hold on;axis off; %除掉坐标text(3,9.8,'武工院打桩机','fontsize',20,'color','r');%画打桩机支架c1=line([1;5.5],[ 0.15;0.15],'color','k','linewidth',8);c2=line([1.7;5.2],[ 1.5;0.15],'color','k','linewidth',4);c3=line([1.8;5.2],[ 0.1;8],'color','k','linewidth',4);c4=line([1.7;5.2],[ 1.5;8],'color','k','linewidth',2);c5=line([1.2;1.8],[ 0.5;0.5],'color','k','linewidth',13);fill([4.9,5.3,5.3,4.9],[8.0,8.0,0.3,0.3],[1,0.1,0.5]);fill([4.4,4.6,5.6,5.8,5.6,4.6],[8.4,8.3,8.3,8.4,8.0,8.0],[1,0.1,0.5]) %画打桩机运动部分和水泥桩b1=line([8;8],[1;6],'color','b','linewidth',6);b2=line([5.5,5.5],[7.9,8],'color','k','linewidth',1);b3=line([5.3,5.55],[7.9,7.9],'color','k','linewidth',3);b4=line([5.5,5.5],[7.9,6.3],'color','k','linewidth',3);b5=line([5.5,5.5],[7,6.6],'color','k','linewidth',10);b6=line([5.5,5.5],[6.6,6.3],'color','k','linewidth',12);pausetime=1.6; %设置暂停时间pause(pausetime);%吊装水泥桩s=0;ds=0.01;pausetime1=.002;while s<2.5 %水泥桩向左移动s=s+ds;set(b1,'xdata',[8-s;8-s],'ydata',[1;6]);pause(pausetime1);endpausetime2=1;pause(pausetime2);s=0;ds=0.01;while s<1 %水泥桩向下移动s=s+ds;set(b1,'xdata',[5.5;5.5],'ydata',[1-s;6-s]);pause(pausetime1);endpause(pausetime2);s=0;ds=0.01;while s<1.3 %打桩机运动部分下移与水泥桩顶端相接触s=s+ds;set(b2,'xdata',[5.5;5.5],'ydata',[7.9-s,8]);set(b3,'xdata',[5.3;5.55],'ydata',[7.9-s,7.9-s]); set(b4,'xdata',[5.5;5.5],'ydata',[7.9-s,6.3-s]);set(b5,'xdata',[5.5;5.5],'ydata',[7-s,6.6-s]);set(b6,'xdata',[5.5;5.5],'ydata',[6.6-s,6.3-s]); pause(pausetime1);end%打桩机开始打桩pausetime3=.4;pause(pausetime2);s=0;ds=0.06; %设定打桩进度while s<4a=0;da=0.01;pausetime4=.0002;while a<.4 %两个子循环设置打桩机铁锺上下反复运动a=a+da;set(b5,'xdata',[5.5;5.5],'ydata',[5.7-s+a,5.3-s+a]); pause(pausetime4);enda=0;while a<.4a=a+da;set(b5,'xdata',[5.5;5.5],'ydata',[6.1-s-a,5.7-s-a]); pause(pausetime4);ends=s+ds;%打桩机运动部分与水泥桩同时向下移动set(b1,'xdata',[5.5;5.5],'ydata',[0;5-s]);set(b2,'xdata',[5.5;5.5],'ydata',[6.6-s,8]);set(b3,'xdata',[5.3;5.55],'ydata',[6.6-s,6.6-s]);set(b4,'xdata',[5.5;5.5],'ydata',[6.6-s,5-s]);set(b5,'xdata',[5.5;5.5],'ydata',[5.7-s,5.3-s]);set(b6,'xdata',[5.5;5.5],'ydata',[5.3-s,5-s]);pause(pausetime3);end5.电路演示程序figure('name','基本电路的模拟');axis([-3,12,0,10]);%建立坐标系hold on %保持当前图形的所有特性axis('off'); %关闭所有轴标注和控制%下面是画电池的过程fill([-1.5,-1.5,1.5,1.5],[1,5,5,1],[0.5,1,1]);%确定坐标轴范围并填充fill([-0.5,-0.5,0.5,0.5],[5,5.5,5.5,5],[0,0,0]); %确定坐标轴范围并填充text(-0.5,1.5,'负极');%在坐标上标注说明文字text(-0.5,3,'电池'); %在坐标上标注说明文字text(-0.5,4.5,'正极'); %在坐标上标注说明文字%下面是画导电线路的过程plot([0;0],[5.5;6.7],'color','r','linestyle','-','linewidth',4);%绘制二维图形线竖实心红色plot([0;4],[6.7;6.7],'color','r','linestyle','-','linewidth',4); %绘制二维图形线实心红色为导线a=line([4;5],[6.7;7.7],'color','b','linestyle','-','linewidth',4,'era semode','xor');%画开关蓝色plot([5.2;9.2],[6.7;6.7],'color','r','linestyle','-','linewidth',4);%绘制图导线为红色plot([9.2;9.2],[6.7;3.7],'color','r','linestyle','-','linewidth',4);% 绘制图导线竖线为红线plot([9.2;9.7],[3.7;3.7],'color','r','linestyle','-','linewidth',4); % 绘制图导线横线为红色plot([0;0],[1;0],'color','r','linestyle','-','linewidth',4);%如上画红色竖线plot([0;10],[0;0],'color','r','linestyle','-','linewidth',4);%如上画横线plot([10;10],[0;3],'color','r','linestyle','-','linewidth',4);%画竖线%下面是画灯泡的过程fill([9.8,10.2,9.7,10.3],[3,3,3.3,3.3],[0 0 0]);%确定填充范围plot([9.7,9.7],[3.3,4.3],'color','b','linestyle','-','linewidth',0.5) ;%绘制灯泡外形线为蓝色plot([10.3,10.3],[3.3,4.45],'color','b','linestyle','-','linewidth',0 .5); %绘制灯泡外形线为蓝色%以下为绘圆x=9.7:pi/50:10.3;%绘圆plot(x,4.3+0.1*sin(40*pi*(x-9.7)),'color','b','linestyle','-','linewi dth',0.5); %绘圆t=0:pi/60:2*pi; %绘圆plot(10+0.7*cos(t),4.3+0.6*sin(t),'color','b'); %绘圆%下面是箭头及注释的显示text(4.5,10,'电流运动方向'); %在坐标上标注说明文字line([4.5;6.6],[9.4;9.4],'color','r','linestyle','-','linewidth',4,'e rasemode','xor');%绘制箭头横线line(6.7,9.4,'color','b','linestyle','>','erasemode','xor','markersiz e',10);% %绘制箭头三角形pause(1);%下面是开关闭合的过程t=0;y=7.7;while y>6.7 %电路总循环控制开关动作条件x=4+sqrt(2)*cos(pi/4*(1-t));y=6.7+sqrt(2)*sin(pi/4*(1-t));set(a,'xdata',[4;x],'ydata',[6.7;y]);drawnow;t=t+0.1;end%下面是开关闭合后模拟大致电流流向的过程pause(1);light=line(10,4.3,'color','y','marker','.','markersize',40,'erasemode ','xor');%画灯丝发出的光:黄色%画电流的各部分h=line([1;1],[5.2;5.6],'color','r','linestyle','-','linewidth',4,'era semode','xor');g=line(1,5.7,'color','b','linestyle','^','erasemode','xor','markersiz e',10);%给循环初值t=0;m2=5.7;n=5.7;while n<6.3;%确定电流竖向循环范围m=1;n=0.05*t+5.7;set(h,'xdata',[m;m],'ydata',[n-0.5;n-0.1]);set(g,'xdata',m,'ydata',n);t=t+0.01;drawnow;endt=0;while t<2;%在转角处的停顿时间m=1.2-0.2*cos((pi/4)*t);n=6.3+0.2*sin((pi/4)*t);set(h,'xdata',[m-0.5;m-0.1],'ydata',[n;n]);set(g,'xdata',m,'ydata',n);t=t+0.05;drawnow;endt=0;while t<0.5 %在转角后的停顿时间t=t+0.5;g=line(1.2,6.5,'color','b','linestyle','^','markersize',10,'erasemode ','xor');%绘制第二个箭头g=line(1.2,6.5,'color','b','linestyle','>','markersize',10,'erasemode ','xor'); %绘制第二个箭头set(g,'xdata',1.2,'ydata',6.5);drawnow;endpause(0.5);t=0;while m<8 % 确定第二个箭头的循环范围m=1.1+0.05*t;n=6.5;set(g,'xdata',m+0.1,'ydata',6.5);set(h,'xdata',[m-0.4;m],'ydata',[6.5;6.5]);t=t+0.05;drawnow;endt=0;while t<2 %%在转角后的停顿时间m=8.1+0.2*cos(pi/2-pi/4*t);n=6.3+0.2*sin(pi/2-pi/4*t);set(g,'xdata',m,'ydata',n);set(h,'xdata',[m;m],'ydata',[n+0.1;n+0.5]);t=t+0.05;drawnow;endt=0;while t<0.5 %在转角后的停顿时间t=t+0.5;%绘制第三个箭头g=line(8.3,6.3,'color','b','linestyle','>','markersize',10,'erasemode ','xor');g=line(8.3,6.3,'color','b','linestyle','v','markersize',10,'erasemode ','xor');set(g,'xdata',8.3,'ydata',6.3);drawnow;endpause(0.5);t=0;while n>1 %确定箭头的运动范围m=8.3;n=6.3-0.05*t;set(g,'xdata',m,'ydata',n);set(h,'xdata',[m;m],'ydata',[n+0.1;n+0.5]);t=t+0.04;drawnow;endt=0;while t<2%箭头的起始时间m=8.1+0.2*cos(pi/4*t);n=1-0.2*sin(pi/4*t);set(g,'xdata',m,'ydata',n);set(h,'xdata',[m+0.1;m+0.5],'ydata',[n;n]);t=t+0.05;drawnow;endt=0;while t<0.5t=t+0.5;%绘制第四个箭头g=line(8.1,0.8,'color','b','linestyle','v','markersize',10,'erasemode ','xor');g=line(8.1,0.8,'color','b','linestyle','<','markersize',10,'erasemode ','xor');set(g,'xdata',8.1,'ydata',0.8);drawnow;endpause(0.5);t=0;while m>1.2 %箭头的运动范围m=8.1-0.05*t;n=0.8;set(g,'xdata',m,'ydata',n);set(h,'xdata',[m+0.1;m+0.5],'ydata',[n;n]);t=t+0.04;drawnow;endt=0;while t<2 %停顿时间m=1.2-0.2*sin(pi/4*t);n=1+0.2*cos(pi/4*t);set(g,'xdata',m,'ydata',n);set(h,'xdata',[m;m+0.5],'ydata',[n-0.1;n-0.5]);t=t+0.05;drawnow;endt=0;while t<0.5 %画第五个箭头t=t+0.5;g=line(1,1,'color','b','linestyle','<','markersize',10,'erasemode','x or');g=line(1,1,'color','b','linestyle','^','markersize',10,'erasemode','x or');set(g,'xdata',1,'ydata',1);drawnow;endt=0;while n<6.3 %循环范围m=1;n=1+0.05*t;set(g,'xdata',m,'ydata',n);set(h,'xdata',[m;m],'ydata',[n-0.5;n-0.1]);t=t+0.04;drawnow;end%下面是开关断开后的情况t=0;y=6.7;while y<7.7 %开关的断开x=4+sqrt(2)*cos(pi/4*t);y=6.7+sqrt(2)*sin(pi/4*t);set(a,'xdata',[4;x],'ydata',[6.7;y]);drawnow;t=t+0.1;endpause(0.5);%开关延时作用nolight=line(10,4.3,'color','y','marker','.','markersize',40,'erasemode','xor');end6.电梯动画演示程序figure('name','自控电梯');axis([-2.0,15.0,-2.0,15.0])hold onfill([-2,15,15,-2],[-2,-2,15,15],[0.5,0.2,0.3]);x1=[8 8 10 10];y1=[6 0 0 6];x2=[10 10 12 12];text(-1,8,'上升','fontsize',10,'color','c');text(4,8,'下降','fontsize',10,'color','c');text(6,12.5,'控制电机','fontsize',10,'color','c');text(12.5,3,'电梯','fontsize',10,'color','c');text(5,4.5,'关闭','fontsize',10,'color','c');text(5,1.5,'打开','fontsize',10,'color','c');l1=line([2;5.5],[11;11],'color','c','linestyle','-','linewidth',2); l2=line([2;2],[9;11],'color','c','linestyle','-','linewidth',2);l3=line([1;1],[7;9],'color','c','linestyle','-','linewidth',2);l4=line([3;3],[7;9],'color','c','linestyle','-','linewidth',2);l5=line([1;3],[9;9],'color','c','linestyle','-','linewidth',2);%绘制导线k1=line([2;1],[6;7],'color','r','linestyle','-','linewidth',2);%单刀双掷开关k2=line([4;5],[3;4],'color','b','linestyle','-','linewidth',2);%单刀双掷开关g1=line([7.7;8],[3;3],'color','b','linestyle','-','linewidth',2);g2=line([7.7;7.7],[3;4],'color','b','linestyle','-','linewidth',2); g3=line([7.4;7.7],[2;4],'color','b','linestyle','-','linewidth',2); g4=line([7.4;7.4],[2;4],'color','b','linestyle','-','linewidth',2); g5=line([7.1;7.4],[2;4],'color','b','linestyle','-','linewidth',2); g6=line([7.1;7.1],[2;4],'color','b','linestyle','-','linewidth',2); g7=line([6.8;7.1],[2;4],'color','b','linestyle','-','linewidth',2); g8=line([6.8;6.8],[2;4],'color','b','linestyle','-','linewidth',2); g9=line([6.5;6.8],[2;4],'color','b','linestyle','-','linewidth',2); g10=line([6.5;6.5],[2;3],'color','b','linestyle','-','linewidth',2); g11=line([6.0;6.5],[3;3],'color','b','linestyle','-','linewidth',2); g12=line([6;6],[2;4],'color','c','linestyle','-','linewidth',2);g13=line([5;6],[2;2],'color','c','linestyle','-','linewidth',2);g14=line([5;6],[4;4],'color','c','linestyle','-','linewidth',2);%绘制电梯门伸缩控制开关door1=patch(x1,y1,[0 1 1]);door2=patch(x2,y1,[0 1 1]);%画电梯的两面门t=0:pi/100:2*pi;fill(6+0.5*sin(t),11+cos(t),[0.7,0.85,0.9]);%电机左端fill(8.5+0.5*sin(t),11+cos(t),[0.7,0.85,0.9]);%电机右端e0=line([9;10],[11;11],'color','r','linewidth',2);%e1=line([10;10],[6;11],'color','b','linewidth',2);%连接电机中轴和电梯的线%画电机的表面(用八根不同颜色的线代替,每根之间相差pi/4)%为简便起见,初始条件下可将八根线分成两组放在电机的顶端和底端s1=line([6;8.5],[12;12],'color','c','linestyle','-','linewidth',2); s2=line([6;8.5],[10;10],'color','m','linestyle','-','linewidth',2); s3=line([6;8.5],[12;12],'color','b','linestyle','-','linewidth',2); s4=line([6;8.5],[10;10],'color','w','linestyle','-','linewidth',2); s5=line([6;8.5],[12;12],'color','k','linestyle','-','linewidth',2); s6=line([6;8.5],[10;10],'color','g','linestyle','-','linewidth',2); s7=line([6;8.5],[12;12],'color','r','linestyle','-','linewidth',2); s8=line([6;8.5],[10;10],'color','b','linestyle','-','linewidth',2); a=0; %设定电机运转的初始角度da=0.05;%设定电机正转的条件s=0; %设定门运动的初始条件ds=0.05;%设定门运动的周期while s<5 %条件表达式 (当0<s<5时,电机正转,门上升)a=a+da;xa1=6+abs(0.5*sin(a)); %当线运动到电机背面时会覆盖电机左端,用abs可解决这一问题增强逼真感)xa2=8.5+0.5*sin(a);ya1=11+cos(a);ya2=11+cos(a);%设定s1的两端点坐标(s1是对应0的线)xb1=6+0.5*abs(sin(a+pi));xb2=8.5+0.5*sin(a+pi);yb1=11+cos(a+pi);yb2=11+cos(a+pi); %设定s2的两端点坐标(s2是对应pi的线)xc1=6+abs(0.5*sin(a+pi/2));xc2=8.5+0.5*sin(a+pi/2);yc1=11+cos(a+pi/2);yc2=11+cos(a+pi/2);%设定s3的两端点坐标(s3是对应pi/2的线)xd1=6+0.5*abs(sin(a-pi/2));xd2=8.5+0.5*sin(a-pi/2);yd1=11+cos(a-pi/2);yd2=11+cos(a-pi/2);%设定s4的两端点坐标(s4是对应-pi/2的线)xe1=6+abs(0.5*sin(a+pi/4));xe2=8.5+0.5*sin(a+pi/4);ye1=11+cos(a+pi/4);ye2=11+cos(a+pi/4);%设定s5的两端点坐标(s5是对应pi/4的线)xf1=6+0.5*abs(sin(a+pi*3/4));xf2=8.5+0.5*sin(a+pi*3/4);yf1=11+cos(a+pi*3/4);yf2=11+cos(a+pi*3/4);%设定s6的两端点坐标(s6是对应pi*3/4的线)xg1=6+abs(0.5*sin(a-pi*3/4));xg2=8.5+0.5*sin(a-3*pi/4);yg1=11+cos(a-3*pi/4);yg2=11+cos(a-3*pi/4);%设定s7的两端点坐标(s7是对应-3*pi/4的线)xh1=6+0.5*abs(sin(a-pi/4));xh2=8.5+0.5*sin(a-pi/4);yh1=11+cos(a-pi/4);yh2=11+cos(a-pi/4); %设定s8的两端点坐标(s8是对应-pi/4的线)set(s1,'xdata',[xa1;xa2],'ydata',[ya1;ya2]);set(s2,'xdata',[xb1;xb2],'ydata',[yb1;yb2]);set(s3,'xdata',[xc1;xc2],'ydata',[yc1;yc2]);set(s4,'xdata',[xd1;xd2],'ydata',[yd1;yd2]);set(s5,'xdata',[xe1;xe2],'ydata',[ye1;ye2]);set(s6,'xdata',[xf1;xf2],'ydata',[yf1;yf2]);set(s7,'xdata',[xg1;xg2],'ydata',[yg1;yg2]);set(s8,'xdata',[xh1;xh2],'ydata',[yh1;yh2]); %绘制电机表面各线条的运动s=s+ds;set(door1,'xdata',x1,'ydata',[6+0.5*s 0+0.5*s 0+0.5*s 6+0.5*s]);set(door2,'xdata',x2,'ydata',[6+0.5*s 0+0.5*s 0+0.5*s 6+0.5*s]); %绘制门的向上运动set(e1,'xdata',[10;10],'ydata',[6+0.5*s;11]); %绘制门顶的绳索的向上运动set(gcf,'doublebuffer','on');%消除振动drawnow;endb=0;%设定电机反转的条件db=0.05;while s<10 %条件表达式 (当5<s<10时,电机反转,门下降)b=b-db;xa1=6+abs(0.5*sin(a+b));xa2=8.5+0.5*sin(a+b);ya1=11+cos(a+b);ya2=11+cos(a+b);%设定s1的两端点坐标(s1是对应0的线)xb1=6+0.5*abs(sin(a+pi+b));xb2=8.5+0.5*sin(a+pi+b);yb1=11+cos(a+pi+b);yb2=11+cos(a+pi+b);%设定s2的两端点坐标(s2是对应pi的线)xc1=6+abs(0.5*sin(a+pi/2+b));xc2=8.5+0.5*sin(a+pi/2+b);yc1=11+cos(a+pi/2+b);yc2=11+cos(a+pi/2+b);%设定s3的两端点坐标(s3是对应pi/2的线)xd1=6+2*abs(sin(a-pi/2+b));xd2=8.5+0.5*sin(a-pi/2+b);yd1=11+cos(a-pi/2+b);yd2=11+cos(a-pi/2+b);%设定s4的两端点坐标(s4是对应-pi/2的线)xe1=6+abs(0.5*sin(a+pi/4+b));xe2=8.5+0.5*sin(a+pi/4+b);ye1=11+cos(a+pi/4+b);ye2=11+cos(a+pi/4+b);%设定s5的两端点坐标(s5是对应pi/4的线)xf1=6+0.5*abs(sin(a+pi*3/4+b));xf2=8.5+0.5*sin(a+pi*3/4+b);yf1=11+cos(a+pi*3/4+b);yf2=11+cos(a+pi*3/4+b);%设定s6的两端点坐标(s6是对应pi*3/4的线)xg1=6+abs(0.5*sin(a-pi*3/4+b));xg2=8.5+0.5*sin(a-3*pi/4+b);yg1=11+cos(a-3*pi/4+b);yg2=11+cos(a-3*pi/4+b);%设定s7的两端点坐标(s7是对应-3*pi/4的线)xh1=6+0.5*abs(sin(a-pi/4+b));xh2=8.5+0.5*sin(a-pi/4+b);yh1=11+cos(a-pi/4+b);yh2=11+cos(a-pi/4+b);%设定s8的两端点坐标(s8是对应-pi/4的线)%绘制电机表面各线条的运动set(s1,'xdata',[xa1;xa2],'ydata',[ya1;ya2]);set(s2,'xdata',[xb1;xb2],'ydata',[yb1;yb2]);set(s3,'xdata',[xc1;xc2],'ydata',[yc1;yc2]);set(s4,'xdata',[xd1;xd2],'ydata',[yd1;yd2]);set(s5,'xdata',[xe1;xe2],'ydata',[ye1;ye2]);set(s6,'xdata',[xf1;xf2],'ydata',[yf1;yf2]);set(s7,'xdata',[xg1;xg2],'ydata',[yg1;yg2]);set(s8,'xdata',[xh1;xh2],'ydata',[yh1;yh2]);s=s+ds;set(k1,'xdata',[2;3],'ydata',[6;7]); %绘制闸刀的换向运动set(door1,'xdata',x1,'ydata',[11-0.5*s 5-0.5*s 5-0.5*s 11-0.5*s]); set(door2,'xdata',x2,'ydata',[11-0.5*s 5-0.5*s 5-0.5*s 11-0.5*s]);%绘制门的向下运动set(e1,'xdata',[10;10],'ydata',[11-0.5*s;11]); %绘制门顶绳索的向下运动set(gcf,'doublebuffer','on');%消除振动drawnow;endfor i=1:400a1=10-0.005*i;a2=10+0.005*i;x1=[8 8 a1 a1];x2=[a2 a2 12 12];set(door1,'xdata',x1);set(door2,'xdata',x2);set(k2,'xdata',[4;5],'ydata',[3;2]); %绘制闸刀的换向运动set(gcf,'doublebuffer','on');%消除振动drawnow;end %绘制电梯门的打开运动for i=1:400a3=8+0.005*i;a4=12-0.005*i;x1=[8 8 a3 a3];x2=[a4 a4 12 12];set(door1,'xdata',x1);set(door2,'xdata',x2);set(k2,'xdata',[4;5],'ydata',[3;4]); %绘制闸刀的换向运动set(gcf,'doublebuffer','on');%消除振动drawnow;end %绘制电梯门的关闭运动7.防汛检测系统动画演示程序for j=0:10axis([-1 1 -1 1]);%设置x,y的坐标范围axis('off');%覆盖坐标刻度x1=[0 0 0.8 0.8];y1=[-0.6 -0.8 -0.8 -0.6];%对水槽中的水进行初设置line([0;0],[0.2;-0.8],'color','k','linewidth',3);%水槽左壁的颜色和宽度line([0;0.8],[-0.8;-0.8],'color','k','linewidth',3);%水槽底部的颜色和宽度line([0.8;0.8],[-0.7;-0.8],'color','k','linewidth',3);%水槽右边出水口的下面的颜色和宽度line([0.8;0.8],[0.2;-0.6],'color','k','linewidth',3);%水槽右边出水口的上面的颜色和宽度line([0.8;0.85],[-0.7;-0.7],'color','k','linewidth',3);%出水口的下壁的颜色和宽度line([0.8;0.85],[-0.6;-0.6],'color','k','linewidth',3);%出水口的上壁的颜色和宽度line(-0.35,0,'Color','r','linestyle','.', 'markersize',20);%给水线处。