matlab—进阶绘图

十、进阶绘图

10.1 Logarithm Plots

这里我们要讲的是画一些与对数(log)有关的图像,这里的log,既可以是图像是log,又可以是坐标轴是log,我们接下来用一个例子来说明

图10-1 示例1

我们首先看到第一个函数logspace(a,b,c),这个函数的作用与linspace()差不多,这个函数的作用是创建一个以10^a为起始,10^b为终止,中间被等分成c个的数据数组,所以x = [10^-1,10^1],那么y = [10^-2,10^2]

重点主要放在semilogx()、semilogy()、loglog()这三个函数上,他们的作用见下表

函数

作用

semilogx

x轴为对数刻度,y轴为线性刻度

semilogy

x轴为线性刻度,y轴为对数刻度

loglog

x轴和y轴均为对数刻度

10.2 plotyy()

我们有时候在一张图上花了两条曲线,但是这两条曲线如果对应的y的值域不一样,那该怎么办呢?这里就有一个函数plotyy(),这个函数可以在一个图上做出两个y轴,下面给出示例

图10-2 plotyy函数

这里有一些比较陌生的知识,之前没讲到过,大家下去了解,我在这就不讲了,大家只需要掌握前四行代码即可

10.3 Histogram

先给出示例

图10-3 hist函数

首先是第一行的randn函数,这个函数的的作用是产生正态分布的随机数或矩阵,其调用格式为:randn(m,n),返回一个m*n的满足正态分布的矩阵,这里既然讲到了randn函数,下面我就给出个表,把与它类似的函数的用法都给出来

函数名

调用格式

说明

rand

rand(m,n)

生成m行n列的均匀分布在(0,1)之间的随机数

randn

rand(m,n)

生成标准正态分布的随机数(均值为0,方差为1)

randi

randi(max)randi(max,m,n)

生成范围在(0,max)之间的一个随机数或矩阵

random

random(‘norm’,a,b,m,n)

生成一个m行n列均值为a、标准差为b的的正态分布的随机数

讲完了randn函数,我们往下看,进入本节的主要函数hist,其调用格式为:his(y,nbins),将向量y等分到nbins个等间隔范围内,并返回每个范围内元素的个数

10.4 bar

matlab中bar函数的作用是绘制直方图,常用于统计或数据采集,它共有四种形式:bar、bar3、barh、bar3h,其中bar和bar3分别用来绘制二维和三维竖直方图,barh和bar3h分别用来绘制二维和三位水平直方图,其调用格式为:bar(x,y),其中x必须单调递增或递减,y为m*n的矩阵,产生的结果为m组,每组n个垂直柱。bar(...,’grouped’),使同一组直方条紧紧靠在一起。bar(...,’stack’),把同一组数据描述在一个直方条上,下面给出示例

图10-4 bar函数

10.5 Pie Charts

pie函数用于描绘圆饼图

10.5.1pie(x)

利用向量x中的数据描绘饼图

示例:

图10-5 pie函数

注意,x中的数据被看作频数,饼图中的比例:x[i]/sum(x),当x中所有元素的元素和sum(x)<1时,图形不是一个整圆,例如x = [0.1,0.2,0.3]时,得到

图10-6 示例2

10.5.2 pie(x,{‘...’,’...’,’...’})

x的意义同上,’...’是标注,示例:

图10-7 示例3

10.5.3 pie3

pie3用于描绘三维饼图,示例:

图10-8 pie3函数

10.6 Polar chart

polar可用于描绘极坐标图像,其调用格式为:polar(theta,rho);,其中theta是用弧度制表示的角度,rho是对应的半径,下面我们给出一个示例

图10-9 polar函数

10.7 stairs and stem charts

stairs和stem两个函数的用法与plot函数类似,只不过这两个,一个是画阶梯图,另个是画针状图,我以简单的sin函数为例,用这两个函数做出它的图像

图10-10 stairs and stem

10.8 errorbar

errorbar顾名思义,就是指有误差范围的,其调用格式为:errorbar(x,y,l,u),x是自变量,y是因变量,l是y的变动下限,u是y的变动上限,或者errorbar(x,y,e),e是y的变动绝对值,举个例子

图10-11 errorbar函数

10.9 fill

fil(x1,y1,选项1,x2,y2,选项2,······)按向量元素的下标渐增次序依次用直线段连接x,y对应元素定义的数据点。假如这样连线所得的折线不封闭,那MATLAB会自动将折线首尾连接起来,形成封闭多边形。然后在多边形内部涂满指定颜色,下面给出示例

图10-12 fill函数

10.10 plot3

三维曲线函数plot3,其调用格式为:plot(x,y,z,’style’);,x,y,z分别对应三个坐标轴,style可以是线的颜色,风格样式,下面给出示例

图10-13 plot3函数

10.11 meshgrid

我们上面讲的3d画图的方法是关于线的,那如果我们想画一个与能呈现出面的图,就要用到meshgrid函数,其调用格式为:[x,y] = meshgrid(x,y);由向量x和y生成二维数组,用来计算二元函数f(x,y)的值z=f(x,y)

10.11.1 三维网格图

mesh(x,y,z):绘制由数组X,Y,Z所确定的曲面网格图,X,Y,Z 都为二维数组时,要求它们的维数相同。X,Y 也可以是向量,但 Z 必须为二维数组, [m,n] = size(Z),此时必须满足:length(X) = n 且 length(Y) = m

mesh(z):相当于X = 1:n ,Y = 1:m,其中 [m,n] = size(Z)

mesh(...,C):二维数组C确定网格颜色,省略C时相当于 C=Z

mesh(...,'PropertyName',PropertyValue,...):设置属性值

示例:

图10-14 mesh函数

图10-15 hidden off

这里我多加了个hidden off,这个命令是使每个四边形区域不填充任何颜色,是空的,这样就可以看到后面的图像

meshz(X,Y,Z):调用方式与mesh相同,在mesh的基础上屏蔽边界面

示例:

图10-16 meshz函数

meshc(X,Y,Z):调用方式与mesh相同,在mesh的基础上增加等高线

示例:

图10-17 meshc函数

10.11.2 等值线图

contour是等高线绘制函数,其调用格式为:

contour(z),根据矩阵z画出等高线,z是以x,y为平面的高度,z必须是一个至少二维的矩阵,x,y轴的范围是[1,n]和[1,m],[m,n] = size(z)

contour(z,n),用n条水平线来绘制z的等高线

contour(z,v),是以向量v中的数据来绘制矩阵z的等高线,等高线的个数等于向量v的长度

示例:

图10-18 contour函数

10.11.3 三维表面图

surf(Z):相当于X = 1:n ,Y = 1:m,其中 [m,n] = size(Z)

surf(Z,C):二维数组C确定网格颜色,省略C时相当于 C=Z

surf(...,'PropertyName',PropertyValue):设置属性值

示例:

图10-19 surf函数

surfc(X,Y,Z):调用方式与surf相同,在surf的基础上增加等高线

示例:

图10-20 surfc函数

10.11.4 绘制一些常见的三维表面

(1)先根据x,y,z矩阵确定网格点

(2)用网格线连接在同一行中的网格点

(3)用网格线连接在同一列中的网格点

(4)用颜色数组C确定网格线(面)的颜色

1. 用surf()绘制四边形平面

绘图思路:把四个定点分成2行2列,将相应的坐标放进x,y,z矩阵即可,同理,对2n边形,可将2n个顶点分成2行n列或n行2列进行处理

示例:

图10-21 示例4

2. 用surf()绘制三角形平面

绘图思路:想象一下,有两个A点,只不过他们完全重合,这样就有四个顶点了,可以分成2行2列,将相应的坐标放进x,y,z矩阵即可绘制

示例:

图10-22 示例5

3. 绘制一个长方体表面图(共六个面)

图10-23 示例6

4. 一些特殊图形的绘制

图10-24 示例7

图10-25 示8

图10-26 示例9

图10-27 示例10

10.12 cylinder

matlab为我们提供了绘制柱面的函数cylinder,其调用格式为:

[x,y,z] = cylinder,返回半径为1、高度为1的圆柱面x,y,z轴的坐标值,圆柱面有20个距离相同的的点

[x,y,z] = cylinder(r),返回半径为r,高度为1的柱面的x,y,z轴的坐标值,柱面有20个距离相同的点

[x,y,z] = cylinder(r,n),返回半径为r,高度为1的柱面的x,y,z轴的坐标值,柱面有n个距离相同的点

示例:

图10-28 cylinder函数

10.13 sphere

matlab为我们提供了绘制球面的函数sphere,其调用格式为:

sphere,生成三位直角坐标系中的单位球体,该单位球体有20*20个面

sphere(n),在当前坐标系中画出有n*n个面的球体

示例:

图10-29 sphere函数

10.14 ellipsoid

matlab为我们提供了绘制椭球面的函数ellipsoid,其调用格式为:

[x,y,z] = ellipsoid(xc,yc,zc,a,b,c,n),返回绘图数据,x,y,z均为(n+1)*(n+1)的二维数组

[x,y,z] = ellipsoid(xc,yc,zc,a,b,c),返回绘图数据,n = 20

示例:

图10-30 ellipsoid函数

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏达摩兵的技术空间

js实现万级数字转汉字显示

完成将 toChineseNum, 可以将数字转换成中文大写的表示,处理到万级别,例如 toChineseNum(12345),返回 一万二千三百四十五。

23920
来自专栏上善若水

002计算机图形学之直线画线算法

主要思想是,由于我们在缓存区上画点,全部是整数。那么在画线的时候,当斜率k小于1的时候,下一个点是取(x+1,y+1)还是(x+1,y)取决于点(x+1,y+0...

28620
来自专栏null的专栏

机器学习算法实现解析——libFM之libFM的训练过程概述

本节主要介绍的是libFM源码分析的第四部分——libFM的训练。 FM模型的训练是FM模型的核心的部分。 4.1、libFM中训练过程的实现 在FM模型的训练...

518110
来自专栏bboysoul

1167: C语言实验题――分数序列

描述:有一个分数序列:2/1, 3/2, 5/3, 8/5, 13/8, …编写程序求出这个序列的前n项之和。 输入:输入只有一个正整数n,1≤n≤10。 ...

10130
来自专栏尾尾部落

小白的机器学习实战——向量,矩阵和数组 小白的机器学习实战——向量,矩阵和数组

15840
来自专栏专知

机器学习的大局:用神经网络和TensorFlow分类文本

本译文自Déborah Mesquita在https://medium.freecodecamp.org发表的Big Picture Machine Learn...

428140
来自专栏小鹏的专栏

Tensorflow使用的预训练的resnet_v2_50,resnet_v2_101,resnet_v2_152等模型预测,训练

tensorflow 实现:Inception,ResNet , VGG , MobileNet, Inception-ResNet; 地址: https:/...

1.1K80
来自专栏WeaponZhi

使用Octave来学习Machine Learning(二)

前言 上一篇我们介绍了 Octave 的一些基本情况,大家对 Octave 应该已经有了一个基本的了解,我相信看这篇文章的朋友已经在自己的电脑中安装好 Ocat...

36960
来自专栏林德熙的博客

C# 判断两条直线距离

d= \frac{ \left| C_1-C_2 \right|}{\sqrt{A^2+B^2}}

14120
来自专栏人工智能头条

十分钟掌握Keras实现RNN的seq2seq学习

15340

扫码关注云+社区

领取腾讯云代金券