以下m文件可以绘制小球沿着螺旋线运动的动画,其实就是两个步骤:

画出螺旋线背景

改变小球的位置,不断刷新图像,看起来就是动画了

完整的m文件代码如下

function f = ballw( K,ki )

%ballw.m演示红色小球沿着一条封闭螺旋线运动的实时动画

%仅演示实时动画的调试格式为ballw(K)

%既演示实时动画又拍摄照片的调试格式为f = ballw(K,ki)

%K红球运动的循环次数(不小于1)

%ki指定拍摄照片的瞬间,取1到1034之间的任意整数

%f存储拍摄的照片数据,可用image(f.cdata)观察照片

%产生封闭的运动轨迹

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

%data = [x',y',z'] %查看封闭曲线的坐标数值

plot3(x,y,z,'r','Linewidth',4) %绘制曲线

axis off; %不画坐标轴

%定义“线”色、“点”型(点)、点的大小(40)、擦除方式(xor)

h = line('Color',[0.67 0 1],'Marker','.','MarkerSize',40,'EraseMode','xor');

%使小球运动

n = length(x);

i = 1;

j = 1;

while 1

set(h,'xdata',x(i),'ydata',y(i),'zdata',z(i));

%bw = [x(i),y(i),z(i)] %查看小球位置

drawnow; %刷新屏幕

pause(0.01) %控制球速

i = i+1;

if nargin == 2 && nargout == 1 %当输入变量个数为2并且输出变量1个时才拍摄照片

if (i == ki && j == 1)

f = getframe(gcf); %拍摄i = ki时的照片

end

end

if i > n

i = 1;

j = j+1;

if j > K

break;

end

end

end

代码注解:

getframe(gcf) 获取整个窗口内容的图像,gcf是get current figure

nargin是number of input arguments的缩写,意为输入参数的个数

nargout是number of output arguments的缩写,意为输出参数的个数

drawnow 刷新屏幕,当需要实时看到程序绘图变化,需要此函数

pause(n) 暂停程序运行n秒

代码中注释掉的两行代码可以用来打印出坐标点,方便调试。

由此引出Matlab的m文件的调试方法:

直接调试法

打印重点怀疑命令行的结果(去掉行尾的;),或打印重点变量

在适当位置添加keyboard指令,中断程序,查看内存空间

在原函数文件首行之前加上百分号,使一个中间变量难于观察的M函数文件变为一个所有变量都保留在基空间中的M文件

用echo指令,使M文件在运行时在屏幕上逐行显示文件内容

工具调试法

Matlab集成专门的调试工具,常用的就是设置断点,查看内存空间,跟踪变量值的变化。

可见Matlab的m文件调试方法和其他语言完全类似。

将上述的m文件保存为ballw.m,然后在Matlab命令窗口中执行如下代码:

>> f = ballw(1,200)

f =

cdata: [420x560x3 uint8]

colormap: []

>> image(f.cdata) %查看获得的照片

拍摄的小球照片

本来想将小球运动的gif动图导出贴在这儿的,可惜我不会,也懒得弄了,感兴趣的朋友可以学习一下,matlab的什么函数可以导出gif或者avi的动画。

matlab画运动轨迹,Matlab画小球沿轨迹运动相关推荐

  1. 【Unity】LineRenderer画运动轨迹

    文章目录 LineRenderer画运动轨迹 LineRenderer画运动轨迹 网上关于LineRenderer的资料比较少,最后参考了这篇,应用到自己的场景中. 首先定义空物体,并转为预制体:默认 ...

  2. matlab pup,matlab利用bar函数画不同颜色直方图

    matlab利用bar函数画直方图,参考文献[1]是matlab官方提供的help文档.里面提供了bar函数的基本用法,但是没有说明如何在同一张图中,为每个bar设置不同的颜色. 例子代码: myda ...

  3. matlab泰勒图,matlab画泰勒图

    急 在matlab中写个用泰勒级数计算arctan(x)的方程 clear;clc;x=1;s=0;y=atan(x);fori=1:1e6n=2*i-1;s=s+(-(-1)^i)*(x^n)/n; ...

  4. matlab中plot函数画线时 颜色和类型

    转自 https://blog.csdn.net/garfielder007/article/details/50449140 matlab里plot函数画线时有很多的颜色和类型可以选择,下面列举一些 ...

  5. Matlab中用Simulink快速画Bode图及 .m 文件画Bode图

    Matlab中用Simulink快速画Bode图及 .m 文件画Bode图 Simulink画Bode图 .m 文件画Bode图 Simulink画Bode图 一万年没用matlab画过Bode图了, ...

  6. Matlab的plot函数画线显示空白问题解决

    Matlab的plot函数画线无法显示问题解决 前言:在使用matlab中的plot函数画图时,没有任何报错,但是画不出线,却能画出点.在查阅资料后找到问题的原因. 这里我们使用y=x^2图像来进行分 ...

  7. matlab提取数据画图,matlab提取excel表格数据画图-如何将Excel中的数据导入MATLAB并在MATLAB中画出图......

    在matlab上如何导入excel表格然后画图 工具:matlab 2018b 1.打开matlab,点击主页下面导入数据,可以导入excel数据,在此将自己命名的huitushuju文件导入: 2. ...

  8. matlab极坐标画椭圆,matlab怎么画极坐标

    怎么用matlab画极坐标图 我要用matlab画极坐标图,一共有12个点的数据 m0=0.1349 θ=0° m1=0.12571.非封闭曲线,已归一化 clc clear t=0:pi/6:(2- ...

  9. matlab中画网格,matlab怎么画网格

    MATLAB绘制栅格图_数学_自然科学_专业资料.坐标在栅格中心 a = [1 ... Matlab实现 三维图形绘制 ---数学13-2班 陈朋 01 02 前言 1.1.曲线图形绘制 1.2.网格 ...

  10. matlab利用bar函数画不同颜色直方图

    matlab利用bar函数画直方图,参考文献[1]是matlab官方提供的help文档.里面提供了bar函数的基本用法,但是没有说明如何在同一张图中,为每个bar设置不同的颜色. 例子代码: myda ...

最新文章

  1. Ubuntu下设置电信拨号上网(10.04版)
  2. fatal error C1083 无法打开包括文件“StdAfx.h” No such file or directory
  3. Delphi常见各类编译错误信息-中英对照
  4. c++ 随机字符串_关于Python的随机数模块,你必须要掌握!
  5. java class文件 代码_java_基础——用代码编译.java文件+加载class文件
  6. android上传图片文件至c 服务器,Android 史上最优雅的实现文件上传、下载及进度的监听...
  7. 问答丨按量子力学来说,一个人撞墙,有多大概率能穿过去?
  8. 演义群侠传(八)【bloom组件源码学习】
  9. 力扣172.阶乘后的零
  10. 11.2. simpara
  11. ZMQ源码阅读 ---- zmq创建线程的过程
  12. ctypes库的使用整理
  13. PostgreSQL 10.1 手册_部分 II. SQL 语言_第 12 章 全文搜索_12.5. 解析器
  14. 重置计算机命令行,怎么用系统命令来重置网络设置
  15. wps word与office word相比的优缺点
  16. 快狗打车正式登陆港交所,“更美好,更绿色”的同城货运平台来了!
  17. 什么是zone?如何做zone?如何做好zone?
  18. devops运维平台汇总
  19. python aes加密_在不到5分钟的时间内用python编码aes128位加密
  20. 你一定要知道长痘痘的注意点!!!

热门文章

  1. hp-unix操作系统root账号被锁定的两种解决方法:
  2. Vallen Dispersion——计算Lamb波色散,声发射信号模态分析的免费软件
  3. CentOS 出现 No packages marked for update
  4. Provision not found. A provision is required for deploying your app to the device. 解决方案
  5. 服务器网卡信息BIOS中设置,bios设置如何关闭网卡
  6. Android国内5大主流音乐APP分析
  7. grasps元素_无摩擦力是什么意思
  8. LVS之ipvsadm命令
  9. @linux下tar解压失败a lone zero解决方法
  10. 香橙派 OrangePi Zero2 配置指南2-改名改密改IP