这个理我要强调的是对于array我这里使用矩阵的方式呈现
Input Array(数组的输入)
对于Row Vector和Column Vector,我们如何使用MATLAB进行操作?
输入秘诀:空格为列,分号为行
Row Vector:
>> A=[1 2 3 4]
Column Vector:
>> B=[1;2;3;4]
然后我们对其进行*运算
AB和BA
结果就是一个矩阵的简单乘法运算,第一个是内积,第二个是外积
之前我已经讲的很清楚,空格为列,分号为行。凭此我们便可以进行矩阵的输入:
>> A=[1 21 6;5 17 9;31 2 7]
Index Array(索引数组)
对于矩阵中的元素,我们可以通过两种方式索引获得:
方式一
加逗号的索引
比如对于上面所举得这个例子A,要想获得数值21怎么办?21处在第一行第二列,所以可以通过A(1,2)
这种如何获取一个子式?
A([1 3],[1 3]):逗号前面表示row,[1 3]表示第一行和第三行;逗号后面表示column,[1 3]表示第一列和第三列
方式二
不加逗号的索引
MATLAB对矩阵的排序不是我们在学习C语言遇到的那样按行排序,而是按列排序,这里A(1)就是1,A(2)就是5,A(4)是21
键入A([1 3 5])表示获取A的第一个第三个第五个元素组成一个行向量
键入A([1 3];[1 3])表示获取A的第一个第三个第五个元素组成一个行向量作为第一行,然后又获取A的第一个第三个第五个元素组成一个行向量作为第二行
Replacing element(替代数组中的元素)
很多时候我们会对数组中的某些元素进行修改来适应新的情况,由此产生一定一个操作就是替代
如何替代?
我们可以清楚的看到这里的9被替换成了12
Colon Operator(等差数组)
首先解释一下colon是什么意思?
冒号->colon(当然还有直肠的意思哈哈)
首先问大家一个问题:我想做一个从1到100的一个公差为1的行向量怎么弄?
>> A=[1 2 3...100]
但是MATLAB不知道这个...是什么意思啊!而且我从1到100一个一个输进去,太累,计算机的目的就是为人类带来方便的,这样做很显然不方便还浪费时间,MathWork的设计人员肯定也想到这样的一个问题。于是有了colon的引入
>> A=1:100
然后我们在工作区双击变量
便可以得到这样的界面,这是从1到100,公差为1
然后公差一定是1吗?是别的就不能使用这么方便的colon了吗?
>> A=1:2:99
这样使用就明白我们的colon兄弟是怎么使用了吧!
这样我们可以看出默认公差是1,如果有特殊说明就在起始位置和结束位置中间再插入一个:q:即可
比如说我试着键入下面的命令:
>> A=[1:5;2:3:15;-2:0.5:0] >> str='a':2:'z'
我设置的A竟然可以做成一个矩阵,跨度都是5次。然而对于A我对于其中的第二行的15改成11再次键入
NO!NO!NO!列数不一样哦!
同时我们也可以看到我们也可以对string进行操作
Deleting row or column
学了上面的colon老兄,我们可以使用它来删除矩阵中的某些行或者列
表达形式:
A()=[]:使用空[]来替代矩阵元素来达到删除的目的
首先我们可以获取一整行或者是一整列
使用空[]来代替元素
通过这种方式就可以达到我们想要的删除某一行或者某一列的目的了。
Array Concatenation
矩阵的串联,我们可以用这种方式来构建增广矩阵
但是在矩阵的构造中空格是列,分号是行,我如果[A;B]会怎么样?
B只是一个3行1列的矩阵,和A在竖着增广不匹配
Array Manipulation(矩阵的运算)
+、-、*、/、^、.、‘
A.^b:对A中的每一元素作b次方的运算
C=A‘就是A的转置的意思
Some Special Matrix
linspace(x1,x2,N),用于产生从x1到x2之间的按照N个数均分得到的数字
就是(x2-x1)/N,然后从x1对其进行等差递增到x2
eye(n):生成n阶单位阵
zeros(n1,n2):n1*n2的零矩阵
ones(n1,n2):n1*n2的矩阵每个元素都是1
diag();对于非行向量,得到的结果是矩阵上主对角线上的元素;对于参数是一个行向量则构建一个以该行向量为主对角元素,其余位置为0的对角矩阵
rand():
rand(a,b)*n+m是产生一个a行b列的矩阵,元素都是介于(m,n+m)的随机数
rand(a)*n+m是产生一个a行a列的矩阵,元素都是介于(m,n+m)的随机数
rand(size(A))*n+m是产生一个和A具有相同尺寸的矩阵,元素都是介于(m,n+m)的随机数
Some Matrix Related Functions(一些特殊矩阵函数)
max(A) | 产生一个行向量,每个行向量都是矩阵A该列的最大值 |
---|---|
min(A) | 产生一个行向量,每个行向量都是矩阵A该列的最小值 |
sum(A) | 产生一个行向量,每个行向量都是矩阵A该列的和 |
mean(A) | 产生一个行向量,每个行向量都是矩阵A该列的平均值 |
max(max(A)) | 比较出行向量中最大的那个元素,上面的max(A,如果A是一个行向量,则不需要这一步就可以得出矩阵中的最大元素 |
对于min、sum、mean都有相似的原理 | |
sort(A) | 对于每列元素从上到下进行排序 |
sortrows(A) | 对于A中的第一列元素从上到下的排序的时候,会牵动着同行的元素一起做相同的对换。 |
size(A) | 得到A的尺寸,几行几列 |
length(A) | 得到MAX{rows,columns}; |
find(A) | 通过find(A==X)找到A中元素值为X的位置,注意矩阵的元素位置是按列排列 |