MATLAB学习笔记3

Matlab学习笔记 Day3

注:仅供学习使用,部分内容来自学校课程课件或网络,理性探讨。

1.矩阵元素的访问:
(1)向量元素标识,v(i)表示向量v的第i个元素的位置,注意matlab中数组下标从1开始(和C/C++最大不同)

>> x = 1:2:9

x =

     1     3     5     7     9

>> x1 = x(3)

x1 =

     5

>> x2 = x(end)

x2 =

     9

(2)全下标方式
A(i,j)表示矩阵A中位于第i行、第j列的元素。

>> A=[1,2;3,4;5,6];
>> a12=A(1,2)

a12 =

     2

>> x=A(1,1)+A(1,2)

x =

     3

此时如果输入a33=A(3,3)会提示数组越界。可以用扩大数组再赋值的方法

>> A(2,4)=9;a33=A(3,3)

a33 =

     0

此时,矩阵A的值可以在工作窗口看到,它已经从3x2扩大为3x4的矩阵了。
在这里插入图片描述

(3)单下标方式
根据矩阵元素在内存中的存储次序(序号)来引用矩阵元素。注意:在MATLAB中矩阵书写按行顺序,但在内存中按列顺序存储。
A(:)表示由A中所有元素按照在内容中存储次序生成的列向量A(1)=1,A(2)=3……,A(6)=6

例:A=[1,2;3,4;5,6]
内存顺序为:1,3,5,2,4,6

对于mxn的矩阵A,A(i,j)对应的单下标为:ind=m*(j-1)+i

2.取子数组
子数组是从数组中取出一部分元素所构成的数组。通常可用全下标、单下标和逻辑下标取子数组。

(1)全下标方式
A(rows,cols) 得到子矩阵,其中rows是行下标组成的向量,cols是列下标组成的向量,如果只取1行(列)则rows(cols)是标量
:出现在行下标位置表示所有行,出现在列下标表示所有列,end出现在行(列)下标的位置表示最大行(列)下标。

(2)单下标方式
A(I)得到A中部分或所有元素组成的向量,其中I是由这些元素的单下标组成的向量,例如:I=[1,2,4]则A(I)是由A(1),A(2),A(4)组成的向量。

例子:
假设A = [1 2 3 4; 5 6 7 8; 9 10 11 12]
A(1,:)取首行
A(:,end)取最后一列
A(1:2:4,:)提取第1,3行,同A([1 3],: )
A([3 1],:)提取第3,1行,顺序不同
A([3: -1:1],:)按行顺序翻转矩阵
A([1 3],[2 4])分别取第一行和第三行的第二列和第四列组成矩阵
A(1:6)为行向量
A(:)为列向量

>> A = [1 2 3 4; 5 6 7 8; 9 10 11 12];A(1,:)

ans =

     1     2     3     4

>> A(:,end)

ans =

     4
     8
    12

>> A([3:-1:1],:)

ans =

     9    10    11    12
     5     6     7     8
     1     2     3     4

>> A([1 3],[2,4])

ans =

     2     4
    10    12

>> A(1:6)

ans =

     1     5     9     2     6    10

>> A(:)

ans =

     1
     5
     9
     2
     6
    10
     3
     7
    11
     4
     8
    12

3.数组元素的赋值
子数组(数组元素)=标量或数组(包括子数组)
(1)全元素方式
格式:a( : ) = b
给矩阵a的所有元素赋值:
①当b为标量时,将矩阵a的所有元素赋值为b
②当b不是标量时,数组b的元素个数必须等于a的元素个数但行列数可以不相等

(2)子数组方式
格式:A(Indexes) = B
给矩阵A中部分元素赋值:注意下标不能越界
①当b为标量时,将矩阵a的指定元素赋值为b
②当b不是标量时,b的元素个数必须等于a的元素待赋值元素个数但行列数可以不相等

格式:A(Rows,Cols) = B
给矩阵A中部分元素赋值,Rows和Cols均为标量或向量,分别制定待赋值元素所在行和列
①当B为标量时,将矩阵a的指定元素赋值为b
②当B不是标量时,矩阵B行列数必须和左边行列完全一致。

在MATLAB中,可以实现未对向量或矩阵进行定义、初始化或赋值的情况下直接对向量或数组元素赋值。

>> a(1)=1,a(2)=2

a =

     1


a =

     1     2

>> b(5:6)=[2,3]

b =

     0     0     0     0     2     3

>> c([3,4],[5,6,7]) = ones(2,3)

c =

     0     0     0     0     0     0     0
     0     0     0     0     0     0     0
     0     0     0     0     1     1     1
     0     0     0     0     1     1     1

>> d(:,2)=[1:6]

d =

     0     1
     0     2
     0     3
     0     4
     0     5
     0     6

>> e(3,:)=1:6

e =

     0     0     0     0     0     0
     0     0     0     0     0     0
     1     2     3     4     5     6

>> f(1,:)=1

f =

     1

DAY3个人体会:补充一个快速清空窗口的快捷表示:在命令窗口输入clc可以快速清空,但不能做到clear。MATLAB对于数组的分片功能非常强大,可以任取元素或赋值。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值