Matlab中的colon, :函数用法

目录

语法

说明

示例

创建单位间距向量

创建具有指定增量的向量

对矩阵行和列进行索引

指定 for 循环迭代


        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

提示

  • for参考页介绍了如何在循环语句上下文中使用 :

  • linespace类似于冒号运算符 :,但可以直接控制数据点数并始终包含端点。同类函数logspace生成对数间距值。

  • 创建向量以建立元胞数组或结构体数组(例如 cellName{:} 或 structName(:).fieldName)的索引时,MATLAB以逗号分隔列表的形式返回多个输出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值