概述
[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
最后
以上就是调皮白昼为你收集整理的matlab矩阵的引用的全部内容,希望文章能够帮你解决matlab矩阵的引用所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复