当前位置:文档之家› Matlab实现振动弹簧的实时动画

Matlab实现振动弹簧的实时动画

Matlab实现振动弹簧的实时动画
Matlab实现振动弹簧的实时动画

Matlab实现振动弹簧的实时动画

摘要:Matlab是当前应用最广泛的科学与工程计算软件之一,本次课设将Matlab引入到图形学动画设计.本次课设主要可分为两大步骤:一、应用Matlab 对弹簧振子进行建模;二、应用Matlab实现弹簧振动的实时动画。其中建模部分包括对天花板的建模、对连接直线的建模、对弹簧的建模、对振动小球的建模。模拟弹簧振动的过程主要包括:①更新小球和弹簧的位置。②更新水平线的位置和长度。③实时地画出弹簧高度与时间的关系曲线。

关键字:Matlab,振动弹簧,建模,实时动画

目录

1 绪论 (1)

1.1 matlab基本功能介绍 (1)

1.2 matlab的动画制作 (2)

2 振动弹簧的实时动画 (4)

2.1 程序功能分析 (4)

2.2 弹簧振子的matlab建模 (6)

2.2.1 天花板的建模 (7)

2.2.2直线的建模 (8)

2.2.3弹簧的建模 (9)

2.2.4球的建模 (10)

2.2.5 利用set函数返回句柄值改变来当前坐标轴 (11)

2.3 弹簧振动的实时动画 (13)

2.3.1弹簧振子简谐振动的物理模型 (13)

2.3.2 利用matlab实现弹簧的实时振动 (14)

2.4 调试结果 (19)

3 设计总结 (23)

参考文献 (24)

致谢 (25)

附录-弹簧阻尼振动程序 (26)

2.1 程序功能分析

以下是利用matlab实现振动弹簧的事实动画的程序。rectangle('position',[12,8.5,2,0.3],'FaceColor',[0.5,0.3,0.4]); axis([0,15,-1,10]); %画顶板

hold on

plot([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;

5text(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

程序功能介绍:模拟弹簧振子简谐运动的过程,同时画出相应圆球质心随时间变化的曲线。

上面的程序为模拟弹簧振子的简谐振动,若要模拟弹簧阻尼振动过程的程序,可见附录。

2.2 弹簧振子的matlab建模

图2-1 弹簧振子建模图

上图所示的图形即为在matlab环境下的弹簧振子的建模图形。

实现程序为:

rectangle('position',[12,8.5,2,0.3],'FaceColor',[0.5,0.3,0.4]); axis([0,15,-1,10]);

%画顶板

hold on

plot([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');

下面分步介绍它的建模过程。

2.2.1 天花板的建模

2-2 天花板建模图

如上图所示,为在matlab环境下天花板的建模图形。

实现程序为:

rectangle('position',[12,8.5,2,0.3],'FaceColor',[0.5,0.3,0.4]);

程序功能介绍:rectangle的功能就是画一个矩形,12,8.5为矩形的一个点,他的长和宽分别为2、0.3。'FaceColor',[0.5,0.3,0.4]是用来设置它的颜色的。

2.2.2直线的建模

2-3 直线的建模图

如上图所示,为在matlab下的直线建模图形。

实现程序为:

plot([13,13],[7,8.5],'r','linewidth',2)

程序功能介绍:plot是一个常用的画图函数,[13,13],[7,8.5]确定的直线的位置,'r'设置直线颜色为红色。linewidth',2,直线的粗细设置。

2.2.3弹簧的建模

2-4 弹簧的建模图

如上图所示,为在matlab环境下弹簧的建模图形。

实现程序为:

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);

程序功能介绍:y=2:.2:7,2到7之间0.2为步长生成向量。M=length(y),

M=y向量的长度。length为求向量长度的函数。M=26。x=12+mod(1:M,2)*2,

生成14 12这样的重复数据26个。mod(x,y)为x模除y。mod(1::26,2) ans=1 0 1 0等26个。x(1)=13,令初始值为13。x(end-3:end)=13,令最后4个数为13。D=plot(x,y),画出该图。

Plot函数介绍:plot(X,Y)绘制所有由Xn和Yn数据对定义的曲线。如果仅Xn或者仅Yn是一个矩阵,plot函数绘制向量对矩阵的行或者列的曲线图,取决于是向量的行还是列的尺寸与矩阵相匹配。

2.2.4球的建模

2-5 球的建模图

如上图所示,为在matlab环境下球的建模图形。

实现程序为:

C=0:.1:2*pi;r=0.35;

t1=r*sin(C);

F1=fill(13+r*cos(C),2+t1,'r');

程序功能介绍:C=0:.1:2*pi;r=0.35,0到2之间0.1步长生成向量,r=0.35. t1=r*sin(C),返回r乘以C中每个元素的正弦值的值。F1=fill(13+r*cos(C),2+t1,'r'),画出多边形小球。Fill函数介绍;函数fill用于创建彩色的多边形。格式; fill(X,Y,C) 从X和Y中的数据出发创建填充的多边形,顶点颜色为C。C十一哥向量或者矩阵,它是指向色图的指标。如果C是一个行向量,则length(C)必须等于size (X,2)和size(Y,2);如果C是一个列向量,则length(C)必须等于size(X,1)和size(Y,1)。如果有必要,fill将通过最后一个顶点与第一个顶点连接来封闭多边形。

2.2.5 利用set函数返回当前坐标轴

通过上几步的建模我们可以得到如下所示的图形

2-6 未重新设置轴建模图

为下一步实时动画做好准备我们需要重新设定一下坐标。在matlab中可以利用set函数返回句柄值改变来当前坐标轴。得到如下所示的图形。

2-7 设置后建模图

2-8 初步设置轴的建模图

实现程序为:

set(gca,'ytick',[0:2:9]);

set(gca,'yticklabels',num2str([-1:3]'));

plot([0,15],[3.3,3.3],'black');

程序功能介绍:gca未返回当前axes对象的句柄值,ytick为控制Y轴坐标刻度记号的位置,即控制坐标轴上刻度记号的位置以及每隔多少值会到下一个刻度记号的位置,同时还需配合yticklabel属性来调整。set(gca,'ytick',[0:2:9]);将坐标轴从0开始以2为间隔到9设置Y坐标。而下一句程序

set(gca,'yticklabels',num2str([-1:3]'))就是通过yticklabel来改变Y轴属性,即由0、2、4、6、8变为-1、0、1、2、3。上面是对Y轴的设置。对平衡位置轴的设置为:plot([0,15],[3.3,3.3],'black'),plot为画直线的常用函数[0,15],[3.3,3.3]定义了平衡位置轴的位置。'black',定义平衡位置轴的颜色为黑。

2.3 弹簧振动的实时动画

2.3.1弹簧振子简谐振动的物理模型

弹簧振子简谐振动的物理模型弹簧振子简谐振动的物理模型

弹簧振子简谐振动的物理模型图2-9 弹簧振子的简谐振动

现在我们来定量地分析上图所示的弹簧振子的小振幅自由振动。

设弹簧的劲度系数为k,小球的质量为m,忽略各种阻力,取平衡位置O为

坐标原点,x坐标轴指向右为正。小球位置坐标为x时,所受弹性回复力Fx 可

表示为:Fx=-kx (1.1)

根据牛顿定律,小球的M的运动微分方程为:mxkx??=?

通常将上式改写成20

xxω??+= (1.2)其中2/kmω= (1.3)微分方程(1.2)的通解为cos()xAtω=+Φ(1.4)

14式(

1.4)就是小球M的运动学方程。式中A和ω是两个积分常数,他们的物理

意义和确定方法将在后面讨论。将式(1.4)对时间求一阶和二阶导数,得到小

球运动速度和加速度

sin()vxAt

ωω==?+Φ (1.5)2cos()axAtωω??==?+Φ(1.6)

因cos()sin(/2)

ttωωπ+Φ=+,故令'/2πΦ=Φ+,则解(1.4)还可以写成'sin()xAtω=+Φ(1.7)即微分方程(1.4)的解即可写成遇险函数的形式,也可以写成正弦函数形式。从解(1.4)看出,弹簧振子运动时,坐标x(即相对平衡未知的位移)

按余

弦(或正弦)函数规律随时间变化。因此,只在线性弹性回复力作用下的弹簧振

子运动是谐振动。式(1.5)、(1.6)表明,作谐振动物体的速度和加速度也是按

余弦或正弦函数规律随时间变化的。见下图,从式(1.2)看出,作谐振动物体

的加速度大小总是与其位移大小成正比,二者符号相反,这一结论被视为谐振动

的运动学特征。图2-10 简谐运动曲线 2.3.2

利用

利用利用

利用matlab实现弹簧的实时振动

实现弹簧的实时振动实现弹簧的实时振动

实现弹簧的实时振动

由2.3.1节可知弹簧振动是的变化主要表现在弹簧和小球的位置随时间的变

化,而且小球的位移是按正弦规律变化的。据此我们先设计一个算法。现用流程

图表示如下:

15

图2-11 流程图

Matlab是通过以下程序实现弹簧振动的实时动画的:rectangle('position',[12,8.5,2,0.3],'FaceColor',[0.5,0.3,0.4]); axis([0,15,-1,10]);

%画顶板

hold on

plot([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;

16x(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

该程序的建模部分已经在前面介绍过了,现介绍实现振动的部分。17在此之前先做一些准备工作。即为以下程序段:

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');

程序功能介绍:H1=plot([0,13],[3.3,3.3],'y'),画句柄线。位置为[0,13],[3.3,3.3],

颜色为黄色。td=[];记录时间的变量,yd =[],记录y轴位置的变量。T=0; 设置

初始时的时间值。text(2,9,'理想中的弹簧振子简谐振动','fontsize',16); 添加标注文

字。位置为(2,9),标注为‘理想中的弹簧振子简谐振动’字符串大小为16

号字体。set(gcf,'doublebuffer','on');启动双缓存,设置渲染效果。

通过上面的可得到如下图所示的界面。

18

图2-12 弹簧振子振动前的图形

模拟弹簧振子简谐振动的过程包括以下内容:

①更新小球和弹簧的位置。

②更新水平线的位置和长度。

③实时地画出弹簧高度与时间的关系曲线。

以上几点将在下面程序介绍中解释。

该弹簧振子的振动是通过一个while循环语句来实现的。程序语句为:while T<12;

pause(0.2);

Dy=(3/2-1/2*sin(pi*T))*1/2;

19 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

程序功能介绍:pause(0.2); 暂停一下,显示动画效果。

Dy=(3/2-1/2*sin(pi*T))*1/2; 计算T时刻弹簧对平衡位置的位移。

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)) ,更新圆球的位置数据。rand(m,n)

函数是返回一个m*n的随机矩阵,这里用来改变小球的颜色。

set(H1,'xdata',[T,13],'ydata',[Y(end),Y(end)]),更新跟踪黄线的数据。这里句柄黄线

的主要作用为将振动弹簧的位移以运动曲线的形式变现出来,以便我们跟好的了

解弹簧振子的简谐振动。set(Q,'xdata',td,'ydata',yd),更新曲线的数据。T=T+0.1; 更

新时间。 2.4

调试结果

调试结果调试结果

调试结果观察T=0、3、6、9、12的调试图形。200

51015

-1

1

2

3理理理理理理理理理理理理

图2-13 T=0的图形0

51015

-1

1

2

3理理理理理理理理理理理理

图2-14 T=3时的图形

210

51015

-1

1

2

3理理理理理理理理理理理理图2-15 T=6时的图形

51015

-1

1

2

3理理理理理理理理理理理理图2-16 T=9时的图形

220

51015

-1

1

2

3理理理理理理理理理理理理

图2-17 T=12时的图形

233

3 3

3 设计总结

设计总结设计总结

设计总结

本次设计实现了设计要求,实现了利用matlab实现振动弹簧的实时动画,同时画出相应圆球质心随时间变化的曲线。

通过此次课程设计,让我对matlab软件的应用有了更多的了解,对一些基

用matlab制作简单仿真动画

用matlab制作简单仿真动画,并生成.avi格式的电影文件 MATALB知识点2008-05-01 13:17:54 阅读152 评论0 字号:大中小订阅 第一种形式:利用for循环,在一定时间内控制图形窗口图像的显示,产生一段动态的演示过程: 如下: set(gcf,'color','green'); grid on; set(gca,'zlim',[-10,10]'); set(gca,'xlim',[-10,10]); set(gca,'ylim',[-10,10]); for i=1:10 set(gca,'view',[-i*3.75,3*i] ); pause(0.2); end 第二种形式:利用moviein和movie函数,现将生成的动画存入一个由movien 函数定义的数组中,每一帧为数组的一个元素,最后用movie重复演示,movie后面的数字代表演示次数。 x=[-30:0.2:30]; y=[-30:0.2:30]; [x,y]=meshgrid(x,y); n=5; M = moviein(n); for i=1:n z=sin(sqrt(2*(x).^2+2*(y).^2)-2*pi*i/10); zz=plot3(x,y,z,'parent',gca); mesh(x,y,z); grid on; colormap([0,0.9,0.5]); light('position',[1,1,2],'style','local','color','white'); material([0.5,0.4,0.3,10,0.3]); set(gca,'zlim',[-10,10]'); M(i)=getframe(gca); end movie(M,20) 创建电影剪辑文件,并存储起来,如下: aviobj=avifile('文件名.avi','fps',3);%定义一个avi文件, %AVIOBJ = AVIFILE(FILENAME,'PropertyName',VALUE,'PropertyName',VALUE,...) %各属性详细说明见matlab帮助 for i=1:n %在当前窗体上生成一帧图像

有趣的MATLAB动画演示程序汇总

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 1 t=4; dt=0.001; w=0; dw=0.001; w=0;%设置球弹起的初始位置 %设置球弹起的高度 while t<=4.12 t=dt+t; if w<=1 w=dw+w; else w=-1;

MATLAB程序设计报告--基于MATLAB动画播放及音乐播放

《MATLAB程序设计》课程设计报告 设计题目:基于MATLAB的动画演示 及背景音乐插入 专业:2011级通信工程 姓名(学号):储兆雄1162310213 邓少林1162310214 徐凯越1162310223 指导教师:倪建军(博士/副教授) 时间:2013年12月20日

目录 1、设计目的 2、总体设计 3、具体设计(功能实现) 4、结果分析 5、改进方向 6、心得体会 文献 附录

1、设计目的 学会运用matlab工具箱实现matlab GUI设计,处理动画运行,以及添加背景音乐,并实现其动态操作,如继续、暂停等功能。 2、总体设计

主要包括:动画模块,音乐模块,动画显示模块 3、具体设计(功能实现) 1) 动画模块 (1)打开动画文件:从文件打开对话框选择动画程序,实现动画播放的可选择性 程序实现代码如下: function btnvopen_Callback(hObject, eventdata, handles) % hObject handle to btnvopen (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) global vfname %动画文件名 [vfname vpname vindex]=uigetfile('*.m','choose moive file'); len=length(vfname); if vindex set(handles.txtvname,'string',vfname(1:len-2)) end 打开对话框效果如下:

MATLAB动画演示效果

MATLAB动画演示效果一 %曲柄滑块机构 hf=figure('name','曲柄滑块机构'); set(hf,'color','g'); hold on axis([-6,6,-4,4]); grid on axis('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.7 c=0.7 a1=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 1 t=t+dt; if t>2*pi t=0; end lena1=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');%消除震动

Matlab动画及其在物理中的应用

实验报告实验课程名称计算物理 实验项目名称Matlab动画及其在物理中的应用 年级 09级 专业物理学 学生姓名 学号 理学院 实验时间:2012 年 4 月 4 日

学生实验室守则 一、按教学安排准时到实验室上实验课,不得迟到、早退和旷课。 二、进入实验室必须遵守实验室的各项规章制度,保持室内安静、整洁,不准在室内打闹、喧哗、吸烟、吃食物、随地吐痰、乱扔杂物,不准做与实验内容无关的事,非实验用品一律不准带进实验室。 三、实验前必须做好预习(或按要求写好预习报告),未做预习者不准参加实验。 四、实验必须服从教师的安排和指导,认真按规程操作,未经教师允许不得擅自动用仪器设备,特别是与本实验无关的仪器设备和设施,如擅自动用或违反操作规程造成损坏,应按规定赔偿,严重者给予纪律处分。 五、实验中要节约水、电、气及其它消耗材料。 六、细心观察、如实记录实验现象和结果,不得抄袭或随意更改原始记录和数据,不得擅离操作岗位和干扰他人实验。 七、使用易燃、易爆、腐蚀性、有毒有害物品或接触带电设备进行实验,应特别注意规范操作,注意防护;若发生意外,要保持冷静,并及时向指导教师和管理人员报告,不得自行处理。仪器设备发生故障和损坏,应立即停止实验,并主动向指导教师报告,不得自行拆卸查看和拼装。 八、实验完毕,应清理好实验仪器设备并放回原位,清扫好实验现场,经指导教师检查认可并将实验记录交指导教师检查签字后方可离去。 九、无故不参加实验者,应写出检查,提出申请并缴纳相应的实验费及材料消耗费,经批准后,方可补做。 十、自选实验,应事先预约,拟订出实验方案,经实验室主任同意后,在指导教师或实验技术人员的指导下进行。 十一、实验室内一切物品未经允许严禁带出室外,确需带出,必须经过批准并办理手续。

Matlab动画程序 弹性蹦球演示过程

Matlab动画程序弹性蹦球演示过程 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)%设置球与地面接触面的颜

【谷速软件】matlab源码-电梯动画演示程序

figure('name','自控电梯'); axis([-2.0,15.0,-2.0,15.0]) hold on fill([-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','-','linewi dth',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);

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','-','linewidt h',2); g2=line([7.7;7.7],[3;4],'color','b','linestyle','-','linewi dth',2); g3=line([7.4;7.7],[2;4],'color','b','linestyle','-','linewi dth',2); g4=line([7.4;7.4],[2;4],'color','b','linestyle','-','linewi dth',2); g5=line([7.1;7.4],[2;4],'color','b','linestyle','-','linewi dth',2); g6=line([7.1;7.1],[2;4],'color','b','linestyle','-','linewi dth',2); g7=line([6.8;7.1],[2;4],'color','b','linestyle','-','linewi dth',2); g8=line([6.8;6.8],[2;4],'color','b','linestyle','-','linewi dth',2);

matlab动画演示17个实例

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 1 t=4; dt=0.001; w=0; dw=0.001; w=0;%设置球弹起的初始位置 %设置球弹起的高度 while t<=4.12 t=dt+t; if w<=1 w=dw+w; else w=-1; end y=(-w*w)+1; set(head,'xdata',t,'ydata',y);%设置球的运动 %set(body,'xdata',t,'ydata',y);%描绘轨迹线

MATLAB程序的设计报告--基于MATLAB动画播放及音乐播放

. . 《MATLAB程序设计》课程设计报告 设计题目:基于MATLAB的动画演示 及背景音乐插入 专业: 2011级通信工程 (学号):储兆雄 1162310213 邓少林 1162310214 徐凯越 1162310223 指导教师:倪建军(博士/副教授) 时间: 2013年12月20日

目录 1、设计目的 2、总体设计 3、具体设计(功能实现) 4、结果分析 5、改进方向 6、心得体会 文献 附录

1、设计目的 学会运用matlab工具箱实现matlab GUI设计,处理动画运行,以及添加背景音乐,并实现其动态操作,如继续、暂停等功能。 2、总体设计

主要包括:动画模块,音乐模块,动画显示模块 3、具体设计(功能实现) 1) 动画模块 (1)打开动画文件:从文件打开对话框选择动画程序,实现动画播放的可选择性 程序实现代码如下: function btnvopen_Callback(hObject, eventdata, handles) % hObject handle to btnvopen (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) global vfname %动画文件名 [vfname vpname vindex]=uigetfile('*.m','choose moive file'); len=length(vfname); if vindex set(handles.txtvname,'string',vfname(1:len-2)) end 打开对话框效果如下:

matlab线性规划动态演示代码及结果

昆明理工大学理学院 信息与计算科学专业操作性实验报告 年级: 09级姓名:陈龙飞学号: 200911101111 指导教师:范敏 实验课程名称:运筹学开课实验室:理216 实验成绩: 学风(5) 观察能力(15) 操作能力(30) 调试能力(50) 其它总分 实验内容: 1.实验/作业题目: 2.实验/作业课时:2课时 3.实验过程(包括实验环境、实验内容的描述、完成实验要求的知识或技能): 实验环境:多媒体计算机一台 实验内容: 4.程序结构(程序中的函数调用关系图) 5.算法描述、流程图或操作步骤: 6.实验数据和实验结果(用屏幕图形表示,可另加附页): c = [2 1]; A = [3 5;6 2;]; B = [15 24]; Aeq = []; beq = []; vlb = [0 0]; vub = [inf,inf]; [x,fval] = linprog(-c,A,B,Aeq,beq,vlb,vub) fig1 = figure('menubar','none','color',[0.3 0.3 0.3]); fill([0 0 5 5],[-4 12 12 -4],[1 5 2 1]) hold on x1 = linspace(0,5,1000); y1 = -3/5*x1+3; y2 = -3*x1+12; plot(x1,y1,'k','linewidth',2) hold on

plot(x1,y2,'k','linewidth',2) hold on y3 = -2*x1+1.40; fill([0 0 4 3.75],[3 0 0 0.75],[0 1 5 2]) hold on %plot(x1,y3,'m','linewidth',2) text(4.5,-1,'\rightarrow y=-2*x','color','b','backgroundcolor','y','fontweight','bold','font size',12) %pasu(1) a01=line([0;3],[4;-2],'color','m','linestyle','-','linewidth',2); t0 = 0; dt1 = 0.01; yzhi = 0.75; %xzhi = 1.40; xzhi = 1.407; while t0

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

卫星绕地球旋转演示动画 clc,clear,close all h=figure('numbertitle','off','name','卫星绕地球旋转演示动画');%设置标题名字 s1=0:.01:2*pi; hold on; axis equal; %建立坐标系 axis off; %除掉Axes r1=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 1 if ~ishandle(h), return, end set(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);

多体运动的matlab动画演示

多体运动的matlab动画演示 1 问题说明 当考虑的体系中的对象超过两个时(比如三个),由于其相互作用的复杂性,使得多体动力学问题变得极其复杂,要用解析的办法通过求解动力学微分方程来求得多体系统的每个对象的运动状态几乎是不可能的。 不过,如果只是为了获得多体系统的粗略而简要的认知,那么可以利用matlab等软件在数值上求解多体系统的动力学微分方程,从而给出多体系统的大致运动状况。 需要说明的是,matlab求解动力学微分方程所得到的结果毕竟是存在误差的,这些误差主要来自于其算法的迭代过程,即舍入误差和截断误差。并且随着迭代次数增加,所产生的误差会不断累积,使得求解的时间尺度越大,后面的误差也就越大。所以要想获得比较可靠的计算结果,则所求解的时间尺度不能太大。 另外,该文档中所采用的动画演示方法是先用ode45在初始条件下求解出所有粒子的运动状态,包括速度和位置,然后按照所求解出来的位置,在每个对应的时间下在图中画出该粒子,从而形成可以连续演示的动画。 由于不是在求解微分方程的同时给出粒子的运动,这种方法演示更加流畅;但是依然能看出在长时间演示后期,动画演示也会迟滞,这是需要改进的地方。 2 理论求解 在这里,所考虑的多体系统可以包括3个粒子,4个粒子甚至更多粒子,只要计算机足够强大,可以放入100个粒子也行。所考虑的粒子分为两类,一种是以质子为原型,一种以中子为原型。 所考虑的作用力包括了两种:强相互作用力,电磁相互作用力。

在程序中求解时,需要把两种作用力加起来(具体见求解微分方程的m文件)。

这里只处理了平面中的运动情况,也可以将其更改为立体空间中的运动,那样会更加复杂。 程序已经写为多体(N体)的通用形式,改变N的大小时,不需要再去更改求解微分方程的m文件的内容,而只需要在参数设置区更改相应的粒子数以及每个粒子的具体信息。 注意,Rx,Ry,m,ke这几个代表着每个粒子信息的量,这几个变量所包含的数值个数(向量维度)应该等于N(n+p)的值,否则将出现不匹配的情况而无法运行。 比如: n=3;p=3; Rx=[0,1,1,1,1/2,0];Ry=[0,0,1/2,1,1/2,1]; m=[1.0012,1.0012,1,1.0012,1.0012,1]; ke=[0,0,1,0,1,0];%Rx,Ry,m,ke都应该包含6个数值,注意理清6个粒子对应的参量。 n=3;p=2; Rx=[0,1/2,1/2,1/2,1];Ry=[1/2,0,1/2,1,1/2]; m=[1,1.0012,1.0012,1.0012,1]; ke=[1,0,0,0,1];%Rx,Ry,m,ke都应该包含5个数值 3 matlab程序 注:如果要copy该段程序直接放入matlab,需要调整注释(绿色的字体部分) 文件1 figure('name','多体运动演示'); %设置标题名字 global N m ke r0 %定义全局变量,使得求解微分方程的m文件可以使用这些变量 %****************************参数设置区********************************% n=3;p=3; %n,p分别为中子和质子数 Rx=[0,1,1,1,1/2,0];Ry=[0,0,1/2,1,1/2,1]; %Rx和Ry分别为起始位置的坐标 m=[1.0012,1.0012,1,1.0012,1.0012,1]; %m以质子的质量为单位1的相对质量值 ke=[0,0,1,0,1,0]; %ke为以e为单位的电荷值 %*********************************************************************% N=n+p;r0=0.4; %N为所有的粒子总数,r0为坐标尺度相对值,可调整 pausetime=.01;%设置暂停时间 set(gca,'xlim',[-2 2],'ylim',[-2 2]);%设置图形窗口的坐标显示范围(可根据实际情况进行更改。) set(gcf,'doublebuffer','on') %消除抖动 axis equal hold on

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

【原创】Matlab中动画的实现、制作和保存 Matlab的确是一个很优秀的工程计算软件,除了强大的矩阵运算,仿真分析外,绘图功能 也是相当的强大。 但是由于Matlab本身的多线程编程缺陷(所谓多线程,就是MATLAB没法同时执行多个回调,只能排队一个一个的按顺序运行,Timer对象除外,它是MATLAB中唯一能够执行多线程的方法),想要动态的画图,并且能够很好的在GUI中得到控制,还不是一件很容易的事情。 但是动画具有生动形象直观的好处,对我的教学、研究等都有不小的作用。那好,我在这里勉为其难的介绍下Matlab中是如何制作动画的。 一、动画的制作 Matlab中动画实现的方法主要有下面三种 1.电影动画:从不同的视角拍下一系列对象的图形,并保存到变量中,然后按照一定的顺序 像电影一样播放。 https://www.doczj.com/doc/c31118691.html,/thread-593-1-1.html 2.擦除动画:画在图形窗口中按照一定的算法连续擦除和重绘图形对象,表现为动画,这个 也是MATLAB中使用最多的方法。 https://www.doczj.com/doc/c31118691.html,/thread-240-1-1.html 3.质点动画:用comet()等函数绘制彗星图,它能演示一个质点的运动 https://www.doczj.com/doc/c31118691.html,/thread-594-1-1.html 二、动画的保存 下面再讲述下生成的动画如何保存。动画保存,只有对电影动画而言才有意义,其他两种谈不上保存,因为他们都是实时的,眨眼就过的 https://www.doczj.com/doc/c31118691.html,/thread-595-1-1.html 三、有关动画制作的实验报告 https://www.doczj.com/doc/c31118691.html,/thread-600-1-1.html

MATLAB动画程序

曲柄滑块机构动画演示 hf=figure('name','曲柄滑块机构'); set(hf,'color','g'); hold on axis([-6,6,-4,4]); grid on axis('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.7 c=0.7 a1=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','-','linewi dth',5);%设置汽缸壁 a10=line([-5.1;-5.1],[-0.8;0.75],'color','y','linestyle','-','linewid

matlab_动画制作

点的简单动画%by dynamic %2008.6.23 % t=0:pi/1000:10*pi; x=30*sin(t); y=30*cos(t); z=t; plot3(x,y,z); hold on %axis equal comet3(x,y,z,0.5) %% %by dynamic %2008.6.13 % vx = 100*cos(1/4*pi); vy = 100*sin(1/4*pi); t = 0:0.001:15; x = vx*t; y = vy*t-9.8*t.^2/2; comet(x,y) %% %by dynamic %2008.6.13 % vx = 100*cos(1/4*pi); vy = 100*sin(1/4*pi); t = 0:0.001:15; x = vx*t; y = vy*t-9.8*t.^2/2; comet(x,y) %% %一般的过程 %擦除重绘模式动画 %选择一个擦除模式

set(h,'erasemode',erasemode)%h是需要执行动画图像的句柄,一般都是由line或者plot创建% %需要执行一些图形计算命令 % %循环语句中更新坐标数据,一般使用for或者while for i=1:n % %必要的MATLAB命令 % set(h,'xdata',xdata,'ydta',ydata)%更新图像的坐标数据 drownnow%刷新屏幕 % %其它Matlab语句 % End %% %运动的小球 %function f=anim_ball(K,ki) % %演示红色小球沿一条封闭旋螺线运动的实时动画 % 仅演示实时动画的调用格式为anim_ball(K) % 既演示实时动画又拍摄照片的调用格式为f=anim_ball(K,ki) % K 红球运动的循环数(不小于1 ) % ki 指定拍摄照片的瞬间,取1 到1034 间的任意整数 % f 存储拍摄的照片数据,可用image(f.cdata) 观察照片 % 产生封闭的运动轨线 % % %by dynamic %all rights reserved by https://www.doczj.com/doc/c31118691.html, %2007.10.26 % t1=(0:1000)/1000*10*pi; x1=cos(t1);y1=sin(t1);z1=-t1; t2=(0:10)/10; x2=x1(end)*(1-t2);y2=y1(end)*(1-t2);z2=z1(end)*ones(size(x2)); t3=t2; z3=(1-t3)*z1(end);x3=zeros(size(z3));y3=x3; t4=t2; x4=t4;y4=zeros(size(x4));z4=y4; x=[x1 x2 x3 x4];y=[y1 y2 y3 y4];z=[z1 z2 z3 z4]; h=figure('numbertitle','off','name','擦除动画演示(运动的小球)——Matlabsky'); plot3(x,y,z,'b') axis off

MATLAB 动画图 作动态图

MATLAB技术论 坛 电子期刊 编辑: xiezhh

制作: MATLAB技术论坛 版权: MatlabSky?版权所有 网址: http://www.matlabsky. com 中国权威MATLAB论坛核心期刊 MATLAB技术论坛简介

目录 1 动画的制作 1.1 电影动画 1.1.1 电影动画演示实例(一)——千变万化的线条 1.1.2 电影动画演示实例(二)——跳动的红心 1.2 擦除动画 1.2.1 Matlab擦除重绘动画实例(一)——运动的小球 1.2.2 Matlab擦除重绘动画实例(二)——单摆横梁 1.2.3 Matlab擦除重绘动画实例(三)——时钟演示 1.2.4 Matlab擦除重绘动画实例(四)——小球绕跑道运动 1.3 质点动画 1.3.1 质点动画演示(一) 1.3.2 质点动画演示(二)——平抛运动 1.3.3 质点动画演示(三)——导弹发射 1.4 霓虹灯效果动画 1.4.1 霓虹灯效果动画实例(一)——霓虹闪烁的球体 1.4.2 霓虹灯效果动画实例(二)——一颗花心 1.5 GIF格式动画制作 1.5.1 GIF格式动画制作案例——绕螺旋线运动的小球 2 动画的保存 3 有关动画制作的实验报告 4 更多动画实例 4.1 电影动画演示——旋转的山峰 4.2 擦除动画实例——卫星绕地球运动(注释很详细) 4.3 擦除动画实例——太阳|地球|月亮|卫星,绕转演示动画(注释很详细) 5 光学夫朗和费衍射现象模拟MATLAB源代码 6 牛顿环动画演示MATLAB源代码 7 使用MATLAB绘制原子轨道和电子云图形 8 振动摆MATLAB动画源代码

相关主题
文本预览
相关文档 最新文档