目录

  • 一、MATLAB常用绘图函数
    • 1、plot() 函数
    • 2、surf() 函数
    • 3、ezplot() 函数
  • 二、动画绘制
    • 1、绘制原理
    • 2、绘制步骤
    • 3、代码模板
  • 三、举个栗子
    • example 1:绘制一根弹簧
    • example 2:做一块曲奇饼

一、MATLAB常用绘图函数

1、plot() 函数

plot() 函数用来绘制二维曲线和三维曲线,调用方法如下:

% 一根二维曲线
plot(x, y)
plot(x, y, 'LineWidth', w, 'color', [1 0 0])% 一次性画多条曲线
plot(x,y1,'g',x,y2,'b--o',x,y3,'c*')% plot3 三维曲线
t = 0 : 0.1 : 6*pi;
plot3(cos(t),sin(t),t,'-b','LineWidth',4);

2、surf() 函数

surf() 函数用于绘制三维曲面,并可以使用不同色彩风格渲染图形,使用surf函数绘制步骤如下:

  1. 设置 x y 坐标
  2. 使用[X, Y] = meshgrid(x, y)生成坐标网格
  3. 根据X Y的函数生成Z的值
  4. 调用surf(X, Y, Z)绘制

举个栗子:

y = -3 : 0.5 : 3;
x = -3 : 0.5 : 3;
[X, Y] = meshgrid(x, y);   % 生成坐标格子Z = X.^2 + Y.^2;
surf(X, Y, Z)
shading interp  # 隐藏网格
colormap('summer')    # 用 'summer' 风格渲染曲面
set(gcf, 'color', [1 1 1])    # 将坐标框边缘设置为白色(去掉它试试)

绘制结果如下:

colormap 的详细使用方法可以查看文档或者参考博客:MATLAB中colormap函数


3、ezplot() 函数

ezplot() 函数可以使用很短的代码绘制各种曲线、曲面、隐函数的图像,使用方法如下:

  • syms sym, 声明sym为变量
  • ezplot(‘f’, [A, B]), f 是关于x的函数, A<x<B
  • ezplot(‘f=const’), 隐函数作图
  • ezplot(‘x(t)’, ‘y(t)’, ‘z(t)’, range),参数方程作图
clear all
figure
subplot(221)
syms x
ezplot('sin(x)', [-2*pi, 2*pi])subplot(222)
syms x y
ezplot('x.^2 + y.^2 = 9')
axis equal, axis([-3.2 3.2 -3.2 3.2])subplot(223)
ezplot('(x^2-1+y^2)^3-x^2*y^3 = 0')
axis([-2 2 -1.5 1.5])subplot(224)
ezplot3('sin(t)', 'cos(t)', 't', [0, 6*pi])

结果如下:


二、动画绘制

1、绘制原理

动画是通过把人物的表情、动作、变化等分解后画成许多动作瞬间的画幅,再用摄影机连续拍摄成一系列画面,给视觉造成连续变化的图画。
它的基本原理与电影、电视一样,都是视觉暂留原理。

在matlab中,我们可以通过重复绘制来生成动画效果,可以在原图的基础上修改绘制对象的参数并重新绘制,也可以通过反复调用绘图的函数来实现 (●’◡’●)


2、绘制步骤

step1: 绘制静态的图
step2: 重复绘制

  • 保存第一次调用绘图函数返回的值,在循环里面使用 set('XData', X, 'YData', Y, 'ZData', Z)
    函数设置参数,并调用 drawnow; 函数在原图上重新绘制,得到动态效果
  • 在循环里面反复调用 plotsurf 函数,使用 getframe; 函数获取每一帧图像并显示,实现动画效果

3、代码模板

  • 模板1:通过 set - drawnow 实现
X = start : step : end;
Y = f(X);% 第一次绘制,保存返回值
h = plot(X, Y, 'LineWidth', 1);while true% 改变X、Y的值change_value(X);change_value(Y);% 使用set修改数据set(h, 'XData', theta, 'YData', Y);drawnow; % 重新绘制
end
  • 模板2:通过 plot - getframe 实现
X = start : step : end;
Y = f(X);while true% 改变X、Y的值change_value(X);change_value(Y);% 重复绘制plot(X, Y)% 获取帧currFrame = getframe;
end

三、举个栗子

example 1:绘制一根弹簧

实现思路:
        反复的调整螺旋线的间距,实现压缩伸长的效果

详细代码:

% 弹簧
theta = -16*pi : 0.1 : 16*pi;
X = sin(theta);
Y = cos(theta);
Z = theta;h = plot3(X, Y, Z, 'LineWidth', 1);
axis([-2 2 -2 2 -50 50]);
set(h, 'color', [0.5 0.25 0.12], 'LineWidth', 2)
axis off, set(gcf, 'color', [1 1 1])while truefor i = 1 : 100Z = 0.98 * Z;set(h, 'XData', X, 'YData', Y, 'ZData', Z);drawnow;endfor i = 1 : 100Z = Z / 0.98;set(h, 'XData', X, 'YData', Y, 'ZData', Z);drawnow;end
end

看,它在动:

但是上面的弹簧看着不咋地,我们可以用surf函数绘制一个三维的弹簧模型:

% 弹簧
R = 5;
r = 0.8;
rate = 0.4;
th = 0 : pi/100 : 10*pi;
phi = 0 : pi/100 : 2*pi;
[theta, fai] = meshgrid(th, phi);X = R*cos(theta) + r*cos(fai).*cos(theta);
Y = R*sin(theta) + r*cos(fai).*sin(theta);
Z = rate * theta + r.*sin(fai);h = surf(X, Y, Z);
shading interp;
% colormap([0.8 0.4 0.25]), camlight;
colormap([0.76 0.5 0.13]), camlight;
set(gcf, 'color', [1 1 1])
axis equal, axis off
set(gcf, 'color', [1 1 1])
axis(1.1*[-(R+r) (R+r) -(R+r) (R+r) min(th)-1 max(th)*rate/(0.985^20)])while truefor i = 1 : 20rate = rate / 0.985;Z = rate * theta + r.*sin(fai);set(h, 'XData', X, 'YData', Y, 'ZData', Z);drawnow;endfor i = 1 : 20rate = rate * 0.985;Z = rate * theta + r.*sin(fai);set(h, 'XData', X, 'YData', Y, 'ZData', Z);drawnow;end
end

cool~


example 2:做一块曲奇饼

实现思路

  • 使用参数方程绘制一个圆环
  • 将圆环改为曲奇饼形状
  • 在第二步的基础上增加一个变化的时间参量,实现旋转

详细代码

clear all
R = 2;  %
t = 0 : pi/100 : 2*pi;
p = 0 : pi/100 : 2*pi;
[theta, phi] = meshgrid(t, p);time = 0 : 0.1 : 100;
for n = 1 : length(time)r = 1 + 0.2 * cos(8 * (phi - theta + time(n))); % 内半径X = (R + r.*cos(theta)).*cos(phi);Y = (R + r.*cos(theta)).*sin(phi);Z = r .* sin(theta);surf(X, Y, Z);shading interp, colormap('autumn')axis equal, axis([-3.5 3.5 -3.5 3.5 -2 2])axis off, set(gcf, 'color', [1 1 1])currFrame = getframe;
end

结果如下:

其他口味的曲奇饼也有,现烤现卖,酥脆可口

matlab 绘图与动画制作相关推荐

  1. MATLAB实现功夫熊猫动画制作程序

    下面来介绍一下经典的功夫熊猫的动作在MATLAB中实现动画制作,达到显示的效果,具体如下: 1.首先在MATLAB的主界面编辑器中写入下列代码,具体如下: clc;close all;clear al ...

  2. matlab动画制作详解

    众所周知,MATLAB的绘图能力十分强大.有时,我们不仅需要绘图,还需要制作一些动态视频和动画,下面就来介绍一些matlab里制作动画和视频常用的函数,并举出一些实例. 一.animatedline ...

  3. matlab 如何输出gif,MATLAB生成GIF动画,PhotoShop制作GIF动画

    MATLAB制作GIF,PHOTOSHOP制作GIF gif动画易于制作,相对于视频更小,更易于传播.作为一个程序猿,在使用程序绘图过程中想生成gif动画,可以使用MATLAB生成.当然,MATLAB ...

  4. matlab程序动画设计,Matlab动画制作(一)——电影动画

    电影动画的好处就是,运行一次可以多次播放,甚至可以直接生成avi文件,直接独立与Matlab环境播放.这是其它三种动画制作方法所不具备的. MATLAB中,创建电影动画的过程分为以下四步: step1 ...

  5. 利用MATLAB进行动画制作

    以植物大战僵尸图片为例,首先找到背景图片.植物.僵尸:如下图(图片来源http://www.aigei.com/s,也就是爱给网). MATLAB程序如下: %% 清屏 clear;close all ...

  6. MATLAB中 GIF动画的制作

    matlab中GIF动画的制作 MATLAB中提供了imWriter函数,可用来制作GIF格式动画文件. 调用 f=getframe 函数抓取当前图形窗口或坐标系中的图片:f是一个包含图像数据的结构. ...

  7. MATLAB 3D 动画制作(一)- 3D 图形设计

    MATLAB 3D 动画制作(一)- 3D 图形设计  MATLAB 3D Animation -- 3D object design  Auther: Sonictl Northeastern Un ...

  8. MATLAB:用drawnow函数制作立方体翻转动画

    MATLAB:用drawnow函数制作立方体翻转动画 %立方体绕x轴旋转一定的角度,theta为要旋转的角度(单位:弧度) function cube_animate(theta) step = 50 ...

  9. gif透明背景动画_制作一个绘图GIF动画

    GIF动画制作软件挺多,但无外乎就是几张图片拼合.最近偶尔翻起了日本的一个小软件,却能像PPT变体一样制作GIF动画,而且还有动态线条功能,下面我们来看一下制作方法: 1.首先导入一张图片,目的是为描 ...

最新文章

  1. docker 启动sqlserver_在Docker上安装MSSQL(SQL Server)
  2. Springlake-01 介绍功能安装
  3. jQuery快速入门专题
  4. Ubuntu 16.04工具栏靠下设置
  5. 更改python默认路径_Linux下多版本python共存时,默认执行路径修改方法
  6. django命令行常见
  7. java反射最佳实践_Java 反射最佳实践 – 码农网
  8. Java学习笔记--反射API
  9. 如何去除PDF的水印
  10. (java)五大常用算法
  11. html 游戏 消消乐,html5叠房子消消乐小游戏代码
  12. sfm点云代码_PCL点云显示sfm数据
  13. 最通俗PLC教程—源自Koyo光洋PLC自学总结(3)
  14. 发布谷歌离线地图瓦片
  15. html箭头轮播,CSS-用伪类制作小箭头(轮播图的左右切换btn)
  16. 常见测试概念-分级测试、灰度测试、AB测试
  17. 导航和路径规划-论文心得
  18. Cause: org.apache.ibatis.type.TypeException: Could not resolve type alias ' star.facade.vipuser.vo.
  19. Juniper防火墙配置备份
  20. Simulink-repeating squence

热门文章

  1. BCIduino社区|HY-BCI Pro多通道科研级脑电放大器接收lsl脑电数据并进行显示
  2. 【JavaScript 逆向】Hook → Tampermonkey 案例分析
  3. 题目---小Q定义了一种数列称为翻转数列: 给定整数n和m, 满足n能被2m整除。对于一串连续递增整数数列1, 2, 3, 4..., 每隔m个符号翻转一次, 最初符号为'-';。
  4. 扫雷游戏C语言编程实现
  5. Linux 管道通信
  6. R语言按照人口比例绘制甘肃地图
  7. 智能空调雷达感应,雷达模组技术方案,毫米波雷达传感器应用
  8. mysql查询前五行数据_五行缺失查询表,用sql语句查询表格的前五行
  9. TB级倾斜摄影建模集群完美硬件配置方案
  10. 如何获取注册高德Key使用的SHA1值