写在前面:作者本人是纯纯的菜鸟,学习的内容来自于 中国大学MOOC 中南大学 《科学计算与MATLAB语言》,欢迎各位大佬或新手在这里和平讨论,如果我有错误请各位不吝赐教,提前感谢各位捧场!
一、矩阵元素的引用方式
1.通过下标引用
使用格式:下标必须为正整数且必须用圆括号包裹(感觉这里比C语言中的数组方便不少,C语言中数组是从0开始标记,而MATLAB从1开始,更加人性化)
A(3,2)
%表示A矩阵中第三行第二列的元素
特殊情况:
当已经创建一个矩阵已知时(即其行列数都已经确定),此时若该矩阵某一超过原矩阵大小的行和列的元素赋值会出现何种情况?先说结论:此时并不会报错因为之前说过MATLAB对矩阵的运用是非常灵活的。
A=[1 2 3;4 5 6];
%创建一个2*3的矩阵
A(4,5)=10;
%给第四行第五列赋值
上例的运行结果如下:
可以看到,当给一个规模相对较小的矩阵在其外赋值时,矩阵会自动扩展,并将剩余数据赋值为0。
2.通过序号来引用
a.MATLAB中矩阵元素排列顺序规则
MATLAB中,矩阵元素按列存储,即先将第一列所有元素排序号为1,2,...再继续排列第二列元素,直到最后一列元素。
b.MATLAB中序号和行列下标之间的转换
下标转换为序号:sub2ind()函数
使用格式:
D=sub2ind(s,i,j)
%D为需要转换的元素对应的序号
%s为原矩阵的行数和列数,是一个二维向量,通常用size()函数获取
%i为原矩阵对应元素的行下标,可以是多维向量 即需要转换多个元素
%i为原矩阵对应元素的列下标,可以是多维向量 即需要转换多个元素
%需要注意,i与j必须相等
序号转换为下标:ind2sub()函数
使用格式:
[i,j]=ind2sub(S,D)
%所有参量的意义与sub2ind()函数中对应参量完全一致,故省略
3.利用冒号表达式获得子矩阵
(个人感觉,这里比较实用)
A(i,:)
%表示A矩阵第i行所有元素
A(:,j)
%表示A矩阵第j列所有元素
A(i:i+m,k:k+m)
%表示A矩阵i~i+m行且存在于k~k+m列所有元素
A(i:i+m,:)
%表示A矩阵i~i+m行所有元素
end运算符:表示一维末尾元素的下标
A(end,:)
%表示A矩阵最后一行所有元素
A([1,4],3:end)
%表示A矩阵第1 4行中第3~最后一列的所有元素
二、矩阵性状的改变
1.如何删除矩阵元素
我们知道,空矩阵是没有任何元素的矩阵,如A=[]表示空矩阵,因此我们删除矩阵元素的思路有了:将需要删除的部分改为空即可
A=[1 2 3 0 0; 7 0 9 2 6;1 4 -1 1 8];
%设置一个矩阵
A(:,[2,4])=[];
%将2 4列元素设置为空,即删除2 4列元素
2.改变矩阵的性状
所需函数 reshape()函数
使用格式:
reshape(A,m,n)
%A表示原矩阵
%m,n分别表示新矩阵的行数和列数
%注意:reshape()函数仅改变矩阵的形状
%不改变原矩阵中元素的个数,且重新排列的矩阵序号与原矩阵保持一致(即存储顺序不变)
特殊的性状改变:将矩阵转换为列向量
格式:
A(:)
%将原矩阵改变为列向量
%注意到,A(:)与reshape(A,x,1)结果一致,其中x为原矩阵元素的个数
以上就是今天的全部内容了,再次感谢各位耐心观看到这里!