关于Matlab编程的一些小总结

Matlab在线使用:http://octave-online.net/

一、矩阵的定义

1.直接定义

  1. A=[1,2,3;4,5,6]
    这里写图片描述
  2. A=[1:10]
    这里写图片描述
  3. A=[1:3,2:4]
    这里写图片描述
  4. A=[1:3;2:4](注意这样定义时要保证每一行的数目是相同的,比如A=[1:3;2:5]这样就是不合法的定义)
    这里写图片描述
    总结就是逗号表分隔,冒号表连续,分号表换行。

2.用zeros和ones定义

A=zeros(m,n) 表示定义一个m行*n列的矩阵,其中每个元素都是0;
A=zeros(m,n) +c 表示定义一个m行*n列的矩阵,其中每个元素都是c(c为常数);
A=ones(m,n) 表示定义一个m行*n列的矩阵,矩阵每个元素都是1;
A=ones(m,n) *c / A=ones(m,n).*c 表示定义一个m行*n列的矩阵,矩阵每个元素都是c;
A=ones(m,n) +c 表示定义一个m行*n列的矩阵,矩阵每个元素都是1+c;

3.用cat定义

C=cat(n,A,B) 其中n是常数,A和B为矩阵。
cat的作用是按照n的数值不同按不同的方式来连接A和B两个矩阵,其中n表示的是C矩阵的维数。
n=1时,将A、B矩阵按列连接。
n=2时,将A、B矩阵按行连接。
n=3时,c是三维数组,不能直接展示出来,所以只能单独提取某一维度来展示。
例:A = [1 2; 3 4];
       B = [5 6; 7 8];

C=cat(1,A,B)

这里写图片描述

C=cat(2,A,B)

这里写图片描述

C=cat(3,A,B)

这里写图片描述

4.用repmat定义

B=repmat(A,m,n) 其中A是矩阵(A是常数也合法),m和n是常数。
repmat的作用是将A矩阵按mxn的方式组成新的矩阵B,即把A矩阵视为一个整体(所以说如果A是常数也是一样的),B矩阵是一个mxn的矩阵,每个元素都是A。
例:A=[1,2;3,4]
       B=repmat(A,2,3)
这里写图片描述

二、矩阵的提取

  1. 如果矩阵是行向量或列向量,A(m)即提取A矩阵的第m个元素值
  2. A(m,:)即提取A矩阵的第m行的所有元素,返回的结果是一个行向量
  3. A(:,n)即提取A矩阵的第n列的所有元素,返回的结果是一个列向量
  4. A(a:b,c:d)即选择A矩阵的a-b行,c-d列,二者相交的部分即为提取出的部分
    这里写图片描述
  5. A(a,b)即提取A矩阵第a行第b列的元素值
  6. A(:,:)=A即提取整个A矩阵

三、运算符操作

主要的运算符号包括以下几种:
+   -   *   /   \(反除)   ^(指数)
.+   .-   .*   ./   .\   .^
运算顺序:指数>乘除>加减

注:

1.带点的操作符主要用于矩阵的运算,表示的是对于矩阵中每个元素都进行该操作,比如A.^2的意思就是A矩阵中每个元素都平方,得到的数覆盖原来的位置,矩阵的行列并不会改变。
2.反除对于实数来说就是字面意思 4\8=8/4。
3.对于矩阵之间的操作来说,乘法、除法和反除是有严格的位置关系的,A*B≠B*A,这在下面会细说。
4.对于整数来说2.0=2.=2,也就是说整数后面的.0不写0的话会自动识别成.0。但是如果”.”和运算符在一起时(比如.+,.-,.*等),会优先识别成运算符,比如说2.+A会识别成(2)(.+)(A)而不是(2.)(+)(A)。

1.矩阵和常数

例A=[1,2]
1. 加减乘
效果就是对矩阵每个数进行同等的操作
A+2=A.+2=2+A=2.+A=[3,4]
A-2=A.-2=[-1,0]
2-A=2.-A=[1,0]
A*2=A.*2=2*A=2.*A=[2,4]
2. 除与反除
A/2=A./2=2\A=2.\A=[0.5,1]
2/A在这里是非法的,因为2/A表示[x1,x2]*A=2,此时要求A是列向量。
2./A=A.\2=[2/1,2/2]=[2,1]
A\2在这里是合法的,因为A\2表示A*[x1,x2]’=2,此时要求A是行向量,解得A\2=[0,1]’。
3. 指数
A^2=A*A 要求A必须是方阵,在这里非法
A.^2=[1^2,2^2]=[1,4]
2^A 要求A必须是方阵
2.^A=[2^1,2^2]=[2,4]

2.矩阵和矩阵

四、操作函数

  1. size(A,1)表示A矩阵的行数,size(A,2)表示列数
  2. max函数
    max(A) 如果A是行向量或列向量,则直接返回A中最大的数;如果A是二维矩阵,则将每一列的最大数提取出来,组成一个行向量。
    这里写图片描述
    max(A,3)对于A中每一个数都和3比,如果小于等于3,则这个位置的数就变成3,如果大于3则保持不变,返回的矩阵和A的维度是一样的。
    这里写图片描述
    max(A,B)这里分为几种情况
    ①A,B都为行向量或A,B都为列向量。
    此时要求A,B的元素数量必须一致,返回的就是A,B每个对应位置的数比较的结果,较大的数保留。返回的矩阵和A(或B)的行列数是完全一致的。
    这里写图片描述
    ②A,B一个为行向量,一个为列向量。
    假设是1xn的行向量和mx1的列向量,那返回的矩阵就是一个mxn的矩阵。
    比较的过程是这样,首先用1xn的行向量把这个mxn的矩阵填满,也就是说行向量连续重复m行。 然后用mx1的列向量每一行的数分别去和mxn的矩阵中对应行的数比较,大的保留。
    例:A=[1,3];B=[2,4,3]’。
    1x2的行向量和3x1的列向量,得到的就是一个3x2的矩阵C。
    首先用A把C填满,可得C=[1,3;1,3;1,3];然后用B去比较,B的第一行是2,C的第一行是1和3,比较完的结果就是2和3;剩下几行以此类推,最终得到C=[2,3;4,4;3,3]。
    ③A,B中一个是二维矩阵,一个为行向量或者列向量。
    如果其中一个是行向量,则要求二维矩阵的列数必须和行向量的列数相同;如果是列向量,则要求矩阵的行数必须和列向量的行数相同。
    比较的过程与上面基本类似,用行向量或列向量填满,然后逐个比较每个位置上的数。
    ④A,B都是二维矩阵
    很简单,要求A,B行列数相同,然后比较每个位置上的数就行了。
  3. sum函数
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值