网格图与曲面图的绘制非常相似,调用格式也近乎一致。绘图之前先要形成字变量的格点矩阵。以下汇总了几种matlab中创建网格的几个函数,供大家参考~~~~
先点赞再看,不然都是流氓
linspace:生成线性间距向量
语法
y = linspace(x1,x2)
y = linspace(x1,x2,n)
说明
y = linspace(x1,x2)
返回包含 x1 和 x2 之间的 100 个等间距点的行向量。
y = linspace(x1,x2,n)
生成 n 个点。这些点的间距为 (x2-x1)/(n-1)。
linspace
类似冒号运算符“:”
,但可以直接控制点数并始终包括端点。“linspace”名称中的“lin”指示生成线性间距值而不是同级函数logspace,后者会生成对数间距值。
示例
等间距数字向量
创建一个由区间 [-5,5] 中的 100 个等距点组成的向量。
y = linspace(-5,5);
包含指定数量的值的向量
创建一个由区间 [-5,5] 中的 7 个等距点组成的向量。
>> y1 = linspace(-5,5,7)
>
y1 = 1×7
-5.0000 -3.3333 -1.6667 0 1.6667 3.3333 5.0000
由均匀分布的复数组成的向量
创建一个复数向量,包含介于 1+2i 和 10+10i 之间的 8 个等距点。
>> y = linspace(1+2i,10+10i,8)
>
y = 1×8 complex
1.0000 + 2.0000i 2.2857 + 3.1429i 3.5714 + 4.2857i 4.8571 + 5.4286i 6.1429 + 6.5714i 7.4286 + 7.7143i 8.7143 + 8.8571i 10.0000 +10.0000i
输入参数
x1,x2 – 点区间
点区间,指定为数值标量对组。x1 和 x2 定义 linspace 生成点的区间。x1 和 x2 可以是实数或复数,x2 可以大于或小于 x1。如果 x2 比 x1 小,则向量包含递减的值。
数据类型: single | double | datetime | duration
复数支持: 是
n – 点的数目
100 (默认) | 实数标量
点的数目,指定为实数标量。
如果 n 为 1,则 linspace 返回 x2。
如果 n 为零或负数,则 linspace 返回 1×0 空矩阵。
如果 n 不是整数,则 linspace 向下舍入并返回 floor(n) 个点。
logspace:生成对数间距向量
语法
y = logspace(a,b)
y = logspace(a,b,n)
y = logspace(a,pi)
y = logspace(a,pi,n)
说明
y = logspace(a,b)
生成一个由在 10 a 和 10 b(10 的 N 次幂)之间的 50 个对数间距点组成的行向量 y。logspace 函数对于创建频率向量特别有用。该函数是 linspace 和“:”运算符的对数等价函数。
y = logspace(a,b,n)
在 10 的幂 10 a 和 10 b(10 的 N 次幂)之间生成 n 个点。
y = logspace(a,pi)
在 10 ^ a 和 pi 之间生成 50 个点,这对于在区间 [10^a,pi] 中创建对数间距频率的数字信号处理很有用。
y = logspace(a,pi,n)
在 10^a 和 pi 之间生成 n 个点。
示例
由对数间距的数值组成的向量
创建一个由区间 [101,105] 内的 50 个对数间距点组成的向量。
y = logspace(1,5);
包含指定数量的值的向量
创建一个由区间 [101,105] 内的 7 个对数间距点组成的向量。
>> y1 = logspace(1,5,7)
>
y1 = 1×7
105 ×
0.0001 0.0005 0.0022 0.0100 0.0464 0.2154 1.0000
由对数间距的复数组成的向量
创建一个由 10(1+2i)和 10(5+5i)之间的 8 个对数间距点组成的复数向量。
>> y = logspace(1+2i,5+5i,8)
y = 1×8 complex
104 ×
-0.0001 - 0.0010i 0.0029 - 0.0024i 0.0133 + 0.0040i 0.0147 + 0.0497i -0.1242 + 0.1479i -0.7150 - 0.0822i -1.2137 - 2.3924i 4.9458 - 8.6913i
输入参数
a – 第一个边界
第一个边界,指定为数值标量。a 参数定义 logspace 生成的点所在区间的一个边界。a 可以是实数或复数,另一个边界 b 可以大于或小于 a。如果 b 比 a 小,则向量包含递减的值。
数据类型: single | double
复数支持: 是
b – 第二个边界
第二个边界,指定为数值标量。b 参数定义 logspace 生成的点所在区间的一个边界。b 可以是实数或复数,b 可以大于或小于另一个边界 a。如果 b 比 a 小,则向量包含递减的值。
数据类型: single | double
复数支持: 是
n – 点的数目
50 (默认) | 实数标量
点的数目,指定为实数标量。
如果 n 为 1,则 logspace 返回 10b。
如果 n 为零或负数,则 logspace 返回一个空的行向量。
如果 n 不是整数,则 logspace 将 n 向下舍入并返回 floor(n) 个点。
freqspace:频率响应的频率间距
语法
[f1,f2] = freqspace(n)
[f1,f2] = freqspace([m n])
[x1,y1] = freqspace(...,'meshgrid')
f = freqspace(N)
f = freqspace(N,'whole')
说明
freqspace
返回等距频率响应的暗含频率范围。当为各种一维和二维应用程序创建所需频率响应时,freqspace 特别有用。
[f1,f2] = freqspace(n)
为 n×n 矩阵返回二维频率向量 f1 和 f2。
对奇数 n,f1 和 f2 为 [-n+1:2:n-1]/n。
对偶数 n,f1 和 f2 为 [-n:2:n-2]/n。
123
[f1,f2] = freqspace([m n])
为 m×n 矩阵返回二维频率向量 f1 和 f2。
[x1,y1] = freqspace(...,'meshgrid')
等效于
[f1,f2] = freqspace(...);
[x1,y1] = meshgrid(f1,f2);
f = freqspace(N)
返回一维频率向量 f 并假定围绕单位圆有 N 个等距点。对于奇数或偶数 N,f 为 (0:2/N:1)。对于偶数 N,freqspace 将返回 (N+2)/2 个点。对于奇数 N,它将返回 (N+1)/2 个点。
f = freqspace(N,'whole')
返回围绕整个单位圆的 N 个等距点。在本示例中,f 为 0:2/N:2*(N-1)/N。
meshgrid:二维和三维网格
语法
[X,Y] = meshgrid(x,y)
[X,Y] = meshgrid(x)
[X,Y,Z] = meshgrid(x,y,z)
[X,Y,Z] = meshgrid(x)
说明
[X,Y] = meshgrid(x,y)
基于向量 x 和 y 中包含的坐标返回二维网格坐标。X 是一个矩阵,每一行是 x 的一个副本;Y 也是一个矩阵,每一列是 y 的一个副本。坐标 X 和 Y 表示的网格有 length(y) 个行和 length(x) 个列。
[X,Y] = meshgrid(x) 与 [X,Y] = meshgrid(x,x) 相同
,并返回网格大小为 length(x)×length(x) 的方形网格坐标。
[X,Y,Z] = meshgrid(x,y,z)
返回由向量 x、y 和 z 定义的三维网格坐标。X、Y 和 Z 表示的网格的大小为 length(y)×length(x)×length(z)。
[X,Y,Z] = meshgrid(x) 与 [X,Y,Z] = meshgrid(x,x,x) 相同
,并返回网格大小为 length(x)×length(x)×length(x) 的三维网格坐标。
示例
二维网格
使用向量 x 定义的 x 坐标和向量 y 定义的 y 坐标创建二维网格坐标。
>> x = 1:3;
>> y = 1:5;
>> [X,Y] = meshgrid(x,y)
>
X = 5×3
1 2 3
1 2 3
1 2 3
1 2 3
1 2 3
Y = 5×3
1 1 1
2 2 2
3 3 3
4 4 4
5 5 5
在二维网格上计算表达式 x2+y2。
>> X.^2 + Y.^2
>
ans = 5×3
2 5 10
5 8 13
10 13 18
17 20 25
26 29 34
绘制曲面图
使用均匀分布的 x 坐标和 y 坐标在区间 [-2,2] 内创建二维网格。
x = -2:0.25:2;
y = x;
[X,Y] = meshgrid(x);
在二维网格上计算并绘制函数 f(x,y)=xe^ (−x 2−y2)。
F = X.*exp(-X.^2-Y.^2);
surf(X,Y,F)
从 R2016b 开始,操作网格之前并不总是需要先创建网格。例如,计算表达式 xe^ (−x2−y2) 将隐式扩展向量 x 和 y。
surf(x,y,x.*exp(-x.^2-(y').^2))
三维网格
在区间 [0,6] 内使用定义的 x、y 和 z 坐标创建三维网格坐标,并计算表达式 x2+y2+z2。
x = 0:2:6;
y = 0:1:6;
z = 0:3:6;
[X,Y,Z] = meshgrid(x,y,z);
F = X.^2 + Y.^2 + Z.^2;
确定网格的大小。三个坐标向量具有不同的长度,构成一个网格点矩形框。
>> gridsize = size(F)
>
gridsize = 1×3
7 4 3
使用单输入语法,基于 x 中定义的坐标生成均匀分布的三维网格。新网格构成一个网格点正方体。
>> [X,Y,Z] = meshgrid(x);
>> G = X.^2 + Y.^2 + Z.^2;
>> gridsize = size(G)
>
gridsize = 1×3
4 4 4
输入参数
x – 点的 x 坐标
点的 x 坐标,指定为向量。
数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
y – 点的 y 坐标
点的 y 坐标,指定为向量。
数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
z – 点的 z 坐标
点的 z 坐标,指定为向量。
数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
输出参数
X – 网格上的 x 坐标
二维或三维数组
网格上的 x 坐标,以二维数组(两个输入)或三维数组(三个输入)的形式返回。
Y – 网格上的 y 坐标
二维或三维数组
网格上的 y 坐标,以二维数组(两个输入)或三维数组(三个输入)的形式返回。
Z – 网格上的 z 坐标
三维数组
网格上的 z 坐标,以三维数组形式返回。
ndgrid:N 维空间中的矩形网格
语法
[X1,X2,...,Xn] = ndgrid(x1,x2,...,xn)
[X1,X2,...,Xn] = ndgrid(xg)
说明
[X1,X2,...,Xn] = ndgrid(x1,x2,...,xn)
复制网格向量 x1,x2,…,xn 以生成 n 维满网格。
[X1,X2,...,Xn] = ndgrid(xg)
指定对所有维度使用单一网格向量 xg。您指定的输出参数的数目决定输出的维度 n。
示例
创建二维网格
根据向量 [1 3 5 7 9 11 13 15 17 19] 和 [2 4 6 8 10 12] 创建一个二维网格。
>> [X,Y] = ndgrid(1:2:19,2:2:12)
>
X = 10×6
1 1 1 1 1 1
3 3 3 3 3 3
5 5 5 5 5 5
7 7 7 7 7 7
9 9 9 9 9 9
11 11 11 11 11 11
13 13 13 13 13 13
15 15 15 15 15 15
17 17 17 17 17 17
19 19 19 19 19 19
Y = 10×6
2 4 6 8 10 12
2 4 6 8 10 12
2 4 6 8 10 12
2 4 6 8 10 12
2 4 6 8 10 12
2 4 6 8 10 12
2 4 6 8 10 12
2 4 6 8 10 12
2 4 6 8 10 12
2 4 6 8 10 12
在网格域上计算函数
计算并绘制函数
在网格域
−2<x1<2 和 −2<x2<2。
创建一个由域值构成的网格。
[X1,X2] = ndgrid(-2:.2:2);
在域上计算函数。
Z = X1 .* exp(-X1.^2 - X2.^2);
生成函数的网格图。
mesh(X1,X2,Z)
在 R2016b 及更高版本中,此任务不需要使用 ndgrid。您可以对这些命令使用隐式扩展来构建网格:
x = -2:.2:2;
Z1 = x.' .* exp(-(x.').^2 - x.^2);
插入数据
创建一个二维网格并计算网格上的一些函数值。在指定的值之间插值以细化网格。
在范围 [−5,5] 内创建 (x,y) 粗网格。
[X,Y] = ndgrid(-5:0.5:5);
计算网格上的一些函数值并绘制函数图。
f = sin(X.^2) * cos(Y.^2);
surf(X,Y,f)
使用更精细的网格在点之间插值,并绘制结果图。
[X1,Y1] = ndgrid(-5:0.125:5);
F = interpn(X,Y,f,X1,Y1,'spline');
surf(X1,Y1,F)
输入参数
x1,x2,…,xn – 网格向量(以单独参数指定)
网格向量,指定为包含每个维度的网格坐标的向量。网格向量隐式定义了网格。例如在二维空间中:
数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
复数支持: 是
xg – 所有维度的网格向量
所有维度的网格向量,指定为包含网格坐标的向量。ndgrid 使用 xg 作为每个维度的网格向量。
数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
复数支持: 是
输出参数
X1,X2,…,Xn – 完整网格表示
完整网格表示,以单独的数组形式返回。对于每个输出数组 Xi,第 i 维包含网格向量 xi 的副本。
资源传送门
- 关注【做一个柔情的程序猿】公众号
- 在【做一个柔情的程序猿】公众号后台回复 【python资料】【2020秋招】 即可获取相应的惊喜哦!
「❤️ 感谢大家」
- 点赞支持下吧,让更多的人也能看到这篇内容(收藏不点赞,都是耍流氓 -_-)
- 欢迎在留言区与我分享你的想法,也欢迎你在留言区记录你的思考过程。
今天的文章MATLAB创建网格函数汇编分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/22449.html