matlab循迹小车程序小车运行动画

小木虫 --- 500万硕博科研人员喜爱的学术科研平台
&&查看话题
Matlab hgtransform做动画问题
我想建几个surface做成一个模型,运行程序演示为动画,并将动画保存为avi。程序也能运行,在运行后显示的figure里的动画也是正常的,但自动保存成的avi播放时是一片空白。
我探索了一下,发现我一共建了5个surface,如果只建其中的4个surface,保存成的avi也能正常播放,但随便加1个surface播放时就是空白。请大神指导这是什么问题?是不是这个跟电脑资源有关?或者跟播放器有关(但我换了几个播放器播放还是一样)?
你看这个网址第5.创建Hgtransform对象,我就是仿照他的程序做的
.cn/s/blog_a1cxj5.html
感觉avi那有问题。。。
研究生必备与500万研究生在线互动!
扫描下载送金币用matlab设计一个单位圆其圆心沿着y=sin(x)的轨迹运行的动画_百度知道
用matlab设计一个单位圆其圆心沿着y=sin(x)的轨迹运行的动画
用matlab设计一个单位圆其圆心沿着y=sin(x)的轨迹运行的动画
提问者采纳
0;;b&#39: ;k = k + 1.1 .1 ,我用的是Matlab 2010b;linewidth'k=1.5 2: 2 * pi.1 , &#39, sin(0 : 2 * pi) + sin(j);r--&#39: 0;linewidth&#39, sin(0 .1 ;for j=0 : 2 * piaxis equal, ',运行没有问题: 0: 2 * pi): 2 * pi) + j, 2), 'F(k)=getframe。 figure.1 , 2);h=gca: 0.5]);;plot(0 ;plot(cos(0 ;ylim([-2;endmovie(F), '大概写点吧
提问者评价
来自团队:
其他类似问题
为您推荐:
单位圆的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁matlab画动画
一般来说,matlab制作动画有四种方式。
第一 、以质点运动轨迹的方式显示
使用comet、comet3函数,前者是二维,后者是三维
comet(y)显示质点绕向量y,comet(x,y)显示质点绕向量y与x,comet(x,y,p),其中为轨迹尾巴的长度
以comet(x,y)为例,
显示平抛运动
& &vx = 40;
& &t = 0:0.001:10;
& &x = vx*t;
& &y = -9.8*t.^2/2;
& &comet(x,y)
显示导弹发射
100*cos(1/4*pi);
100*sin(1/4*pi);
& &t = 0:0.001:15;
& &x = vx*t;
vy*t-9.8*t.^2/2;
& &comet(x,y)
匀速圆周运动
0:0.0001:2*
& &r = 10;
& &x=r*cos(sita);
& &y=r*sin(sita);
& &comet(x,y)
comet3与comet的用法相类似,可以在帮助文件里的例子
&t = -10*pi:pi/250:10*
&comet3((cos(2*t).^2).*sin(t),(sin(2*t).^2).*cos(t),t)
第二、以电影播放的方式显示
保存想要产生动画的图片,存储为一系列各种类型的二维、三维图,再像放电影的方式按次序播放出来。步骤由getframe函数将当前的图片抓取为电影的画面,再由movie函数将动画显示出来。
[x,y] = meshgrid([-1.05:.2:3.75]);
z = x.*exp(-x.^2-y.^2);
set(gca,'nextplot','replacechildren');
for j = 1:40
surf(x*sin(pi*j/100),y*sin(pi*j/100),z*sin(-pi*j/100));
& & & m(j)
= getframe
第三、以对象方式显示
设置对象的属性EraseMode,更新对象来产生新图,drawnow()函数进而覆盖旧图,从而使得图形不断发生变化。
x = -pi:pi/30:
plot(x,cos(x),'o','MarkerEdgeColor','k','MarkerFaceColor','r','MarkerSize',8,'EraseMode','Xor')
for j = 1:10000
&y = 1/2*sin(3*x+0.006*j);
&set(h,'ydata',y);
第四、以旋转颜色的方式显示
matlab中如何输出avi格式影片文件
以上文《穿越(fly through)图形动画实例》为基础,将屏幕上显示的动画保存到avi格式文件中。
%清除所有变量
%加载matlab自带数据程序
wind_speed = sqrt(u.*u + v.*v + w.*w);
hpatch=patch(isosurface(x,y,z,wind_speed,35));
%isosurface计算wind_speed=45的等势面
%patch命令绘制等势面
isonormals(x,y,z,wind_speed,hpatch);
%isonormals计算等势面的正交向量,使画面更光滑
set(hpatch,'FaceColor','red','EdgeColor','none');
%设定等势面的表面颜色为红色
daspect([1 1 1]); �ta aspect
verts]=reducepatch(isosurface(x,y,z,wind_speed,45),.05);
% reducepatch ,减少需要描绘等势面所需要表面数, 减少至 5%
hcone=coneplot(x,y,z,u,v,w,verts(:,1),verts(:,2),verts(:,3),2);
%绘制穿越等势表面的圆锥流体
set(hcone,'FaceColor','blue','EdgeColor','none');
camproj perspective &%设置该图形的投影方式为透视
camva(25); %设置视角为25度
hlight = camlight('headlight'); %在照相机出创建光源.
set(hpatch,'AmbientStrength',.1,...
&%设置环境光的光度为0.1,表面环境光近乎为黑色
& & 'SpecularStrength',1,...
& %设置块对象的镜面反射强度为1
& & 'DiffuseStrength',1);
& & %设置快对象的漫反射强度为1
set(hcone,'SpecularStrength',1);
&%设置锥形流体的镜面反射强度为1
set(gcf,'Color','k'); %将图像窗的颜色设置为黑色
lighting phong &%sets the lighting to
set(gcf,'Renderer','zbuffer');
%设置光源的着色属性为zbuffer,也可以尝试openGL
hsline=streamline(x,y,z,u,v,w,80,30,11);
&%创建一个从点(80,30,11)开始的流线
xd = get(hsline,'Xdata');
&%取得这条流线的x,y,z坐标
yd = get(hsline,'Ydata');
zd = get(hsline,'Zdata');
delete(hsline); %流线已无用,可删除
%以下为此动画的核心部分
aviobj=avifile('fly_through.avi','fps',3);
%创建avi对象,命名为fly_through.avi, 3帧每秒
for i=1:length(xd)-50 &
%从点(80,30,11)开始,到终点前的50个点出结束。
campos([xd(i),yd(i),zd(i)]); &
%设定照相机的位置为当前点位置
camtarget([xd(i+5),yd(i),zd(i)]);
&%设置照相机的目标位置,在照相机位置向前5个点出
camlight(hlight,'headlight'); &%光源也移至照相机处
& & drawnow
&%绘制移动后的图形
& & frame=getframe(gcf);
&%获取当前frame
aviobj=addframe(aviobj,frame);
&%将当前图像加入到avi对象中
aviobj=close(aviobj); &%结束时关闭avi对象
%注意,此方法,运行时不能移动或改变动画窗口的大小。
function makeavi(filepath,frames,format)
% This function make AVI video from images
% filepath: & &the location
of target image
% frames: & & the numbles of
frame that you want to use &
% fromat: & & the format of
%================设置相关属性======================
set(fig,'DoubleBuffer','on');
set(gca,'xlim',[-80 80],'ylim',[-80 80],...
'NextPlot','replace','Visible','off')
aviObj=avifile('examples.avi'); % Create a new AVI file
aviObj.Quality = 100;
&%只对压缩格式有效,[0,100],default:75
aviObj.fps=1; & &%the speed
of the AVI movie in frames per second (fps),default:15 fps
<pression='None'; &% compression
codec指定压缩编解码器
%=======设置黑白图像属性===========
%cola=0:1/255:1; &&
%cola=[cola];
%cola=cola';
%aviobj.colormap=
% =====多帧循环开始,读序列图像=================
for num=1:frames
& & Im_origin = imread(
strcat(location,'\',num2str(num),'.',format) );
im2uint8(Im_origin);
getframe(gca);
& & aviObj =
addframe(aviObj,uint8(Im));
aviObj=close(aviObj);
mov = aviread('examples.avi');
movie(mov);
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。Posts - 56,
Articles - 6,
Comments - 38
success belongs to the one with clear and long-term goals!
13:35 by 钱吉, ... 阅读,
如题,多的就不说了,先上一个效果:
每隔0.1秒,绿色的直线转动一个角度。
再看看代码如何实现:
fuction main
%%%%%%%%%%%%%%%%%%%%%%%%%%主函数%%%%%%%%%%%%%%%%%%%%%%%%%%%
bTimeStep = 0.1; %%重绘时间间隔
bSaveAVI = 1;
%%是否将重绘过程保存到视频文件
initDegree = 0; %%初始位置,位于零度角
if bSaveAVI
aviname = input('input the file name for avi: ','s');
aviobj=avifile(aviname);
%定义一个视频文件用来存动画
aviobj.quality=60;
aviobj.Fps=5;
r = 1; %%背景图中圆的半径
DrawBackGround(r); %%画背景
[xcoor,ycoor] = GetCorrByDegree(r, TransDegToRad(initDegree)); %%画初始位置,零度角
x = [0 xcoor];
y = [0 ycoor];
h = plot(x,y,'g-');
degreeStepForTest = 20;%%用于测试用的角度增量
for sita = initDegree+degreeStepForTest:degreeStepForTest:360
[xcoor,ycoor] = GetCorrByDegree(r, TransDegToRad(sita)); %%获取当前的角度对应的坐标
x = [0 xcoor];
y = [0 ycoor];
set(h,'XData',x,'YData',y); %%重置绘图对象
if bSaveAVI
frame=getframe(gca);
%把图像存入视频文件中
im=frame2im(frame);
aviobj=addframe(aviobj,im);
pause(bTimeStep); %%暂停间隔
if bSaveAVI
aviobj=close(aviobj); %%关闭视频文件句柄
%%%%%%%%%%%%%%%%%%%%%%%%%%子函数%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function radian = TransDegToRad(degree)
%%将角度转换为弧度
radian = degree * pi / 180;
function [x y] = GetCorrByDegree(R, Degree)
%%根据角度和半径计算当前点的坐标
x = R * cos(Degree);
y = R * sin(Degree);
function DrawBackGround(r)
%%%画背景图
x = linspace(-r,r,1000);
y1 = sqrt(r^2-x.^2);
plot(x,y1,'b-'); %%画上半圆
y2 = -sqrt(r^2-x.^2); %%画下半圆
plot(x,y2,'b-');
plot([0 0],[-r r],'b-'); %%画纵直径
plot([-r r],[0 0],'b-'); %%画横直径
注释写的很详细,不多说了。}

我要回帖

更多关于 matlab 小车运动仿真 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信