今天,给大家带来Matlab
中比较常用的size
函数,size
函数用于获取数组、矩阵等的尺寸,即获取数组的行数、列数等尺寸。我们不仅可以单独获取矩阵的行数,列数,也可以同时输出矩阵的行数及列数。本文,主要讲解Matlab
中size
函数的常见用于、语法说明、四维数组的大小、表大小、使用单独的参数返回各个维度长度。
下面,我们首先给出Matlab
中关于size
函数的帮助文档如下:
>> help size
size Size of array.
D = size(X), for M-by-N matrix X, returns the two-element row vector
D = [M,N] containing the number of rows and columns in the matrix.
For N-D arrays, size(X) returns a 1-by-N vector of dimension lengths.
Trailing singleton dimensions are ignored.
[M,N] = size(X) for matrix X, returns the number of rows and columns in
X as separate output variables.
[M1,M2,M3,...,MN] = size(X) for N>1 returns the sizes of the first N
dimensions of the array X. If the number of output arguments N does
not equal NDIMS(X), then for:
N > NDIMS(X), size returns ones in the "extra" variables, i.e., outputs
NDIMS(X)+1 through N.
N < NDIMS(X), MN contains the product of the sizes of dimensions N
through NDIMS(X).
M = size(X,DIM) returns the length of the dimension specified
by the scalar DIM. For example, size(X,1) returns the number
of rows. If DIM > NDIMS(X), M will be 1.
When size is applied to a Java array, the number of rows
returned is the length of the Java array and the number of columns
is always 1. When size is applied to a Java array of arrays, the
result describes only the top level array in the array of arrays.
Example:
If
X = rand(2,3,4);
then
d = size(X) returns d = [2 3 4]
[m1,m2,m3,m4] = size(X) returns m1 = 2, m2 = 3, m3 = 4, m4 = 1
[m,n] = size(X) returns m = 2, n = 12
m2 = size(X,2) returns m2 = 3
常见用法
sz = size(A)
szdim = size(A,dim)
szdim = size(A,dim1,dim2,…,dimN)
[sz1,...,szN] = size(___)
语法说明
sz = size(A)
返回一个行向量,其元素是A
的相应维度的长度。例如,如果A
是一个3×4
矩阵,则size(A)
返回向量[3 4]
。
如果A
是表或时间表,则size(A)
返回由表中的行数和变量数组成的二元素行向量。
当dim
为正整数标量时,szdim = size(A,dim)
返回维度dim
的长度。从R2019b
开始,您还可以将dim
指定为正整数向量,以一次查询多个维度长度。例如,size(A,[2 3])
以1×2
行向量szdim
形式返回A
的第二个维度和第三个维度的长度。
szdim = size(A,dim1,dim2,…,dimN)
以行向量szdim
形式返回维度dim1,dim2,…,dimN
的长度(从R2019b开始)。
[sz1,…,szN] = size(_)
分别返回A
的查询维度的长度。
四维数组的大小
创建一个随机四维数组并返回其大小。
A = rand(2,3,4,5);
sz = size(A)
输出结果如下:
sz =
2 3 4 5
仅查询A
的第二个维度的长度。
szdim2 = size(A,2)
输出结果如下:
szdim2 =
3
从R2019b
开始,您可以通过指定向量维度参数,一次查询多个维度长度。例如,求A
的第一个维度和第三个维度的长度。
szdim13 = size(A,[1 3])
由于我这里用的是Matlab 2016
,不支持这种写法。以上代码的输出结果如下:
szdim13 =
2 4
当然,如果是2016
版本,我们可以分开写,代码如下:
>> sidim1 = size(A,1)
sidim1 =
2
>> sidim2 = size(A,3)
sidim2 =
4
求A
的第二个维度至第四个维度的长度。
szdim23 = size(A,2:4)
当然,这个写法在Matlab 2016
中依旧不支持,不过还是可以单独从2
到4
单独求一下size
。
szdim23 =
3 4 5
您也可以使用单独的输入参数列出查询的各个维度。当然,这种Matlab 2016
也不支持
szdim23 = size(A,2,3,4);
Matlab 2016
版本只支持以下这种写法:
>> sidim2 = size(A,2)
sidim2 =
3
>> sidim3 = size(A,3)
sidim3 =
4
>> sidim4 = size(A,4)
sidim4 =
5
表大小
创建一个包含5
行和4
个变量的表。
LastName = {'Smith';'Johnson';'Williams';'Jones';'Brown'};
Age = [38;43;38;40;49];
Height = [71;69;64;67;64];
Weight = [176;163;131;133;119];
BloodPressure = [124 93; 109 77; 125 83; 117 75; 122 80];
A = table(Age,Height,Weight,BloodPressure,'RowNames',LastName)
输出如下结果:
A =
Age Height Weight BloodPressure
___ ______ ______ _____________
Smith 38 71 176 124 93
Johnson 43 69 163 109 77
Williams 38 64 131 125 83
Jones 40 67 133 117 75
Brown 49 64 119 122 80
计算该表的大小。尽管BloodPressure
变量包含两列,但size
只计算变量数。
sz = size(A)
>> sz = size(A)
sz =
5 4
使用单独的参数返回各个维度长度
创建一个随机矩阵,并分别返回行数和列数。
A = rand(4,3);
[numRows,numCols] = size(A)
输出结果如下:
numRows =
4
numCols =
3
这可能也是最常用的方法了吧。
转载文章,原文出处:MathWorks官网,由古哥整理发布
如若转载,请注明出处:https://iymark.com/articles/2407.html