MATLAB入门——索引

矩阵下标

设A是一个四维矩阵A的i行j列用A(i,j)表示,若引用单一下标则例如A(8)即表示A(4,2)。

若将值存储在矩阵外部元素中,如A(4,5)=7,不会报错,此时A会变成4x5的矩阵,第五列前三行自动补0。

冒号运算符

冒号运算符是MATLAB最重要的运算符之一。

表达式A=1:10

>> A=1:10
A =
     1     2     3     4     5     6     7     8     9    10

是包含1到10之间整数的行向量。

若要获取非单位间距的向量,需要指定增量:

100:-7:50

>> 100:-7:50
ans =
   100    93    86    79    72    65    58    51

包含冒号的下标表达式引用部分矩阵:

A(1:3,3)

表示A矩阵第三列的前三个数形成的列向量

>> A(1:3,3)
ans =
     3
    10
     6

使用sum(A(1:4,4))计算A矩阵的第四列列总和

sum(A(1:4,4))

 >> sum(A(1:4,4))
ans =
    34

而sum(A)则是输出一个行向量,其中每个元素是A每列元素和

>> sum(A)
ans =
    34    34    34    34

而计算第四列的总和有一个更好方法。冒号本身引用矩阵行或列中所有元素,而关键字end引用最后一个行或列。因此,

sum(A(:,end))

>> sum(A(:,end))
ans =
    34

可以计算A最后一列所有元素值之和

串联

串联就是连接小矩阵以便形成更大矩阵的过程。成对的方括号即为串联运算符。

B=[A A+32;A+48 A+16]

>> B=[A A+32;A+48 A+16]

B =

    16     2     3    13    48    34    35    45
     5    11    10     8    37    43    42    40
     9     7     6    12    41    39    38    44
     4    14    15     1    36    46    47    33
    64    50    51    61    32    18    19    29
    53    59    58    56    21    27    26    24
    57    55    54    60    25    23    22    28
    52    62    63    49    20    30    31    17
 

删除行和列

使用一对方括号即可从矩阵中删除行和列。例如删除第二列

X=A;
X(:,2)=[]

>> X(:,2)=[]

X =

    16     3    13
     5    10     8
     9     6    12
     4    15     1
 

使用X(1,2)=[]删除单个元素将使X不再是矩阵,将会导致错误。

而使用单一下标可以删除一个元素或多个元素,但这样会将剩余元素重构为一个行向量。

>> X(2:2:10)=[]

X =

    16     9     3     6    13    12     1
 

标量扩展

通过标量扩展,会为范围中的索引分配一个指定标量。例如给1行到2行上2列到3列的元素置0

A(1:2,2:3)=0

>> A(1:2,2:3)=0

A =

    16     0     0    13
     5     0     0     8
     9     7     6    12
     4    14    15     1

逻辑下标

根据逻辑和运算创建的逻辑向量可用于引用子数组

NaN是用于缺少观测值的标记。可以使用逻辑索引删除缺少的数据,使用

isfinite(x)

①以小数形式显示:format rat

②以分数形式显示:format short

③以紧凑形式显示:format compact

④以松散形式显示:format loose

对于所有有限数值,返回true。无限数值返回false。

x = [2.1 1.7 1.6 1.5 NaN 1.9 1.8 1.5 5.1 1.8 1.4 2.2 1.6 1.8];
x=x(isfinite(x))

>> x=x(isfinite(x))
x =
  列 1 至 9
    2.1000    1.7000    1.6000    1.5000    1.9000    1.8000    1.5000    5.1000    1.8000
  列 10 至 13
    1.4000    2.2000    1.6000    1.8000

find函数

find函数可用于确定与指定逻辑条件相符的数组元素的索引。find以最简单的形式返回索引的列向量,转置该向量即得到获取索引的行向量,例如找到A中为质数的元素下标

A=magic(4);
k=find(isprime(A))' 

>> k=find(isprime(A))'
k =
     2     7    13

然后按k确定的顺序输出A中的质数并显示为行向量

A(k)

>> A(k)
ans =
     5     7    13

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值