matlab矩阵的引用

[1]通过下标来引用矩阵的元素

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

A =

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

这里有一个问题,给出的矩阵元素的行下标和列下标,都大于原来矩阵的下标。那么这样是否允许呢?
在MATLAB中,是允许这样做的。如果,给出的元素的行下标和列下标,都大于原来矩阵的下标。那么,MATLAB会自动补全矩阵,将矩阵中没有被赋值的元素赋值为0。

[2]通过序号来引用

(1)在MATLAB中,矩阵元素按列存储,即首先存储矩阵的第一列元素,然后存储第二列元素,…,一直到矩阵的最后一列元素。
(2)矩阵元素的序号就是矩阵元素在内存中的排列顺序。

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

A =

     1     2     3
     4     5     6

>> A(3)

ans =

     2

在内存中的排列顺序是,首先存储第一列元素,然后存储第二列元素,最后存储第三列元素。按照这个存储规则,那么各个序号所对应的元素的值为:

A(1)=1    A(3)=2    A(5)=3
A(2)=4    A(4)=5    A(6)=6

也就是说,在矩阵中,如果用序号来引用元素的话,那么A(1,2)的元素就是该矩阵的第3号元素,即A(3)。
不难发现,序号与下标是一一对应的,以mxn矩阵A为例,矩阵元素A(i,j)的序号为(j,i)xm+i。
 

============================================================

冒号表达式: t=起始:步长:终止 生成行向量,省略步长,则默认为1 如起始:终止 

等价于linspace函数(a,b,n) n为元素总数,当n省略时,生成100个

结构矩阵类似于C语言中的结构体  结构矩阵元素.成员名=表达式 把不同类型的数据放在同一矩阵中

单元矩阵:与一般矩阵相似,只是直接用大括号括起来,然后内部每一行元素用;相隔,直接每一个元素就是有可能不同数

 

matlab中引用元素方法:①下标(行数i,列数j)② 序号  他们之间的关系A(i,j)的序号为(j-1)×m+i  PS:matlab中元素按列存储,依次第一列,第二列等

若赋值时元素超出原矩阵大小,则会自动扩大,未被赋值的元素值为0

 

D=sub2ind(S,I,J) 将size(A)的行列下标转化为序号,如果想要返回一个矩阵,I,J的行列必须相同

[I,J]=ind2sub(S,D) 将序号转化为对应大小矩阵中的行列索引

获得子矩阵,A(i:i+m,k:k+m) 第i-i+m行中第k-k+m列元素

空矩阵可用于删除元素[]   end代表最后

reshape命令改变矩阵的形状reshape(A,m,n) 只是改变元素的列数行数,即相当于转换前后元素个数不能变

???A(:)等价于reshape(A,m,1),也即是按照序号一个个排好,并且必须前者小于后者,如A(1:2)为对,A(2:1)为错将矩阵A的每一列元素堆叠起来,成为一个列向量,即相当于按照内存存储顺序依次堆叠形成一个列向量

矩阵同一行元素可用逗号或空格分隔
 

================================================

矩阵拆分:
 索引矩阵的一种特殊形式,不仅可以获得某个元素,也可获得某一行或某一列;或某一行中从m列到n列的内容
 I = A(i, m : n)    <=>    I = A(i, [m,n])    %A代表要拆分的矩阵,i代表哪一行,m:n代表从m列到n列之间的所有元素;m:n为标量,[m,n]为向量表示
 如果列为从m到最后一列,则可用1:end代替;  end-1代表倒数第二列 。。。
  即:I = A(i, m : end)
  
 若均用向量表示,如 I = A([1,3],[1,3]) 逗号前的[1,3]代表1行和3行,后面[1,3]则代表第1列和第3列;在向量表示中,只显示明确标出来的行和列
 例:
  A = 1 2 3
   4 5 6
   7 8 9
   
  I1 = A([1,3],[1,3])
   I1 = 1 3
     7 9
    
 注:逗号前的行数也可用:进行一定范围内的输出
  I = A(i : j, m : n)   %输出i到j行的m到n列
 例:
  I1 = A(1:3,2:3)
   I1 = 2 3
     5 6
     8 9
    
 小结:冒号、向量输出法均可用在行或列上,冒号可进行一定范围内的输出(从i到j行/列),向量只输出明确显示出来的行和列
 
 注意,在输出某行或某列时,一定要记得要么行要么列必须有向量或冒号表达式,不然输出的就是矩阵的某一个元素
 例:I = A(i,m)  则输出的就是A(i,m)元素
  I1 = A(2,3)
   I1 = 6
   
 如果行或列表达式只是":",则代表输出全部的行或列
 例:
  I1 = A(:,:)
   I1 = 1 2 3
     4 5 6
     7 8 9

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值