Matlab中的colon, :函数用法
作者:互联网
目录
colon, :向量创建、数组下标和 for
循环迭代
语法
x = j:k
x = j:i:k
A(:,n)
A(m,:)
A(:)
A(j:k)
说明
冒号是 MATLAB® 中最有用的运算符之一。使用该运算符可以创建向量,为数组加下标,以及指定
for
迭代。
x = j:k
创建一个包含元素[j,j+1,j+2,...,j+m]
的单位间距向量x
,其中m = fix(k-j)
。如果j
和k
都是整数,则简化为[j,j+1,...,k]
。
x = j:i:k
创建一个固定间隔向量x
,以i
作为元素之间的增量。向量元素大致为[j,j+i,j+2*i,...,j+m*i]
,其中m = fix((k-j)/i)
。但是,如果i
不是整数,则浮点算术运算的作用在于确定colon
是否包括向量中的端点k
,因为k
可能并不是正好等于j+m*i
。如果指定非标量数组,则 MATLAB 将j:i:k
解释为j(1):i(1):k(1)
。
x = colon(j,k)
和x = colon(j,i,k)
是执行命令j:k
和j:i:k
的替代方式,但很少使用。这些语法会启用类的运算符重载。
A(:,n)
、A(m,:)
、A(:)
和A(j:k)
是包含冒号的矩阵A
的常见索引表达式。如果您在索引表达式中使用冒号作为下标,例如A(:,n)
,则它是包含特定数组维度中所有下标的简写形式。创建使用冒号进行索引的向量也很常见,例如A(j:k)
。有些索引表达式结合了两种冒号用法,如A(:,j:k)
中所示。
包含冒号的常见索引表达式包括:
-
A(:,n)
是矩阵A
的第n
列。 -
A(m,:)
是矩阵A
的第m
行。 -
A(:,:,p)
是三维数组A
的第p
页。 -
A(:)
将A
中的所有元素重构成一个列向量。如果A
已经是列向量,则此表达式没有任何作用。 -
A(:,:)
将A
中的所有元素重构成一个二维矩阵。如果A
已经是矩阵或向量,则此表达式没有任何作用。 -
A(j:k)
使用向量j:k
对A
进行索引,因此相当于向量[A(j), A(j+1), ..., A(k)]
。 -
A(:,j:k)
包含第一个维度中的所有下标,但使用向量j:k
对第二个维度进行索引。这样将返回包含列[A(:,j), A(:,j+1), ..., A(:,k)]
的矩阵。
示例
创建单位间距向量
创建由1到10之间的数字组成的单位间距向量。冒号运算符使用 +1 作为默认增量。
x = 1:10
x = 1×10
1 2 3 4 5 6 7 8 9 10
创建具有指定增量的向量
创建按指定值递增或递减的向量。
创建元素按0.1递增的向量。
x = 0:0.1:1
x = 1×11
0 0.1000 0.2000 0.3000 0.4000 0.5000 0.6000 0.7000 0.8000 0.9000 1.0000
创建元素按 -2 递减的向量。
y = 10:-2:0
y = 1×6
10 8 6 4 2 0
对矩阵行和列进行索引
详细了解使用冒号 :
对矩阵进行索引的多种方法。
创建一个 3×3 矩阵。对第一行进行索引。
A = magic(3)
A = 3×3
8 1 6
3 5 7
4 9 2
A(1,:)
ans = 1×3
8 1 6
对第二列和第三列进行索引。
A(:,2:3)
ans = 3×2
1 6
5 7
9 2
将矩阵重构成列向量。
A(:)
ans = 9×1
8
3
4
1
5
9
6
7
2
指定 for
循环迭代
在 for
循环上下文中,冒号指定循环迭代。
编写一个 for
循环,求 1 到 4 之间的数字 n
的平方。
for n = 1:4
n^2
end
ans = 1
ans = 4
ans = 9
ans = 16
输入参数
j
- 起始向量值
标量
起始向量值,指定为实数标量。如果 j < k
,因此输出向量非空,则 j
是该向量中的第一个元素。
示例: x = 0:5
示例: x = 0:0.5:5
数据类型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| char
| datetime
| duration
k
- 结束向量值
标量
结束向量值,指定为实数标量。仅当按照增量刚好递增到等于 k
时,k
才是该向量中的最后一个值。例如,向量 0:5
的最后一个值为 5,但 0:0.3:1
的最后一个值并不是 1,因为按照其增量并不会刚好递增到等于该端点值。
示例: x = 0:5
示例: x = 0:0.5:5
数据类型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| char
| datetime
| duration
i
- 向量元素之间的增量1
(默认) | 标量
向量元素之间的增量,指定为实数标量。
示例: x = 0:0.5:5
数据类型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| char
| datetime
| duration
输出参数
x
- 固定间隔向量
行向量
固定间隔向量,以行向量形式返回。如果 j > k
,则 x = j:k
是一个空矩阵。更为常见的是,语法 x = j:i:k
将在下列情况下返回空矩阵:
-
i
、j
或k
为空输入 -
i == 0
-
i > 0
且j > k
-
i < 0
且j < k
提示
-
for参考页介绍了如何在循环语句上下文中使用
:
。 -
linespace类似于冒号运算符
:
,但可以直接控制数据点数并始终包含端点。同类函数logspace生成对数间距值。 -
创建向量以建立元胞数组或结构体数组(例如
或cellName
{:}
)的索引时,MATLAB以逗号分隔列表的形式返回多个输出。structName
(:).fieldName
标签:冒号,示例,创建,矩阵,用法,索引,colon,Matlab,向量 来源: https://blog.csdn.net/jk_101/article/details/111317178