MATLAB中冒号运算符的含义

时间:2010-10-21 19:55:04

标签: matlab

我遇到了一些带有冒号的MATLAB语法,我并不完全理解。

第一个问题:

表达式:0:pi/4:pi 得到答案:0 0.7854 1.5708 2.3562 3.1416

为什么会这样?我认为使用冒号运算符作为引用索引的快速方法,这样我们就不必写出完整的列表。 (例如1:3 - > 1 2 3

第二个问题:

与上面类似,假设我有一个矩阵X = [1 2 3 4 5 6 7 8 9]。如何解释表达式X(:,1:3)?具体来说,没有左右数字的冒号运算符是什么意思?

2 个答案:

答案 0 :(得分:3)

实际上a:b会生成一个向量。您可以仅将其用作索引,因为(...)也接受列表,例如

octave-3.0.3:10> a = [1,4,7]
a =

   1   4   7

octave-3.0.3:11> b = [1,4,9,16,25,36,49]
b =

    1    4    9   16   25   36   49

octave-3.0.3:12> b(a)    # gets [b(1), b(4), b(7)]
ans =

    1   16   49

现在,a:b:c语法相当于[a, a+b, a+2*b, ...],直到c,例如

octave-3.0.3:15> 4:7:50
ans =

   4  11  18  25  32  39  46

解释了0:pi/4:pi中的内容。


单独的:选择整个轴(行/列),例如

octave-3.0.3:16> a = [1,2,3;4,5,6;7,8,9]
a =

   1   2   3
   4   5   6
   7   8   9

octave-3.0.3:17> a(:,1)   # means a(1:3, 1)
ans =

   1
   4
   7

octave-3.0.3:18> a(1,:)   # means a(1, 1:3)
ans =

   1   2   3

有关详细信息,请参阅colon (:)上的官方MATLAB文档。

答案 1 :(得分:0)

我对KennyTM的答案我的两个便士。

实际上MATLAB中的标量和矢量变量有2个维度。标量有1行1列,向量有1行或1列。试试size(X)

用于索引的冒号(:)运算符仅表示全部。语法X(:,1:3)表示从1到3获取所有行和列。由于变量X只有1行,因此您将在此行中获得前3个值。