Matlab学习笔记

运算:

1.     算术运算(在矩阵意义下进行)

+:要求矩阵同型,对应元素相加减,如果用标量和矩阵相加减,不同型就凉凉提示错误,那就将矩阵每个元素和数字相加减

-:同上

*:A*B要求左行=右列,否则报错

/(右除) \(左除):若A矩阵是非奇异方阵(可逆矩阵),则B/A等效于B*inv(A)B\A=inv(A)*B通常用的是/也就按照一般的理解

^乘方:没什么好说的,但是,,inv(A)=A^-1,结果一样的

点运算!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

点运算符:.*    ./    .\    .^

两矩阵进行点运算是指他们的对应元素进行相关运算,因此要求同型

例如x=0.1:0.3:1

Y=sin(x).*cos(x)得出当x=0.1 0.4 0.7 1.0的时候对应的sin(x)cos(x)的值的序列,如果用*则会因为两个1*n的矩阵不能相乘而报错

2.     关系运算

   >=   ==    ~=最后一个是不等于

成立则表达式的结果为1,不是则为0

当比较的是俩同型矩阵,比较相同位置的元素,最后的结果是与原矩阵同型的,元素由0,1组成,如果是矩阵和元素比,就挨着挨着比

3.     逻辑运算

矩阵表示:

A=[1,2;3,4]

就是表示|1   2 |这个矩阵

|3   4 |

矩阵元素按照先行后列的方法编写角标(sub)

但是按照列存储序号(index)

用sub2ind 或者 ind2sub来进行转化

D=sub2ind(S,I,J)其中,S是转化的矩阵的行列组成的二维向量,可以用size(A)来获取,I是行下标,J是列下标,I和J可以是同型的向量,使D成为与IJ同型并且对应元素行为I,列为J的矩阵

[I,J]=ind2sub(S,D)S仍由size函数获取,D为相应序号(or矩阵,返回的I,J此时就对应D中指数所指的行数和列数)

利用冒号获得子矩阵,A是一个矩阵

例如A(i,:),表示A矩阵的第i行这个子矩阵

A(:,j)表示A矩阵的第j列这个子矩阵

A(i:1+m,j+m)表示A矩阵从(i,j)到(i+m,j+m)的子矩阵

Ps.空着只有:的就表示全选

End运算符:表示某一维的末尾下标

例如A([1,4],3:end)就是引用第1,4行从第三列到最后一列的元素

利用空矩阵删除一些元素

例如A=[1,2,3,0,0;

7,0,9,2,6;

1,4,-1,1,8]

A(:,[2,4])=[]

就删除了第2,4列的数值,A变成[1,3,0;

7,9,6;

1,-1,8]

介绍reshape(A,m,n):在矩阵总元素保持不变的前提下,将矩阵A重新排列成mxn的二维矩阵,ps:它只改变原矩阵的行数列数,不改变元素个数和存储顺序,仍然按列存储

A(:)将矩阵的每一列元素堆叠起来成为一个列向量

Rem函数P=rem(A,2)==0

判断A的每个元素是不是可以被2整除,如果可以,就为1

字符串可以形成矩阵ch=[‘abcd’;’1234’],要求各行各列的元素个数相同,如果不行,要添加空格键来充数

Ch(2,3)就表示3

介绍find函数,find函数的使用方式举例find(ch>=’a’&ch<=’z’)即找出ch

中ASCII码大于a效于z的字母(小写字母),返回字符的索引

字符串处理:

字符串属性

介绍length()函数,括号内写入一个可迭代的东西,即可求出其长度,返回一个integer

介绍eval()函数,eval(s)s是字符串,作用是将s内的字符串作为代码运行(同python)

介绍abs()函数,abs(s),将s里面的所有字母按照顺序以ASCII码转换为一个list

字符串的比较

字符串比较的如果使用关系运算符的话,两个字符串依次按照ASCII码逐个进行比较,结果是一个数值(logical)向量,向量中的元素要么是1要么是0

介绍strcmp(s1,s2)函数比较s1 s2是否相等,是则返回1,否返回0

介绍strncmp(s1,s2,n)比较两个字符串前n个字符是否相等,是反回1,否返回0

介绍strcmpi(s1,s2),忽略字母大小写前提下比较是否相等

strcnmpi(s1,s2),道理同1,2

字符串查找and替换

介绍findstr(s1,s2)返回短字符串在长字符串中的位置

介绍strrep(s1,s2,s3)将s1中的s2替换为s3

特殊矩阵

通用的特殊矩阵

1.     zeros函数,产生全0矩阵,即0矩阵

2.     ones函数,产生全1矩阵,即幺矩阵

3.     eye函数,产生对角线为1的矩阵,若矩阵是方阵,得到单位矩阵

4.     rand函数,产生(0,1)区间均匀分布的随机矩阵

5.     randn函数,产生均值为0,方差为1的标准正态随机分布矩阵

调用格式有zeros(m)、zeros(m,n)、zeros(size(A))产生的矩阵大小可以确定

Skills:产生区间上均匀分布的随机数:

x=rand()产生0~1上的随机数

ans=a+(b-a)*x,产生结果

如果要[a,b]区间上的整数,用fix(a+(b-a+1)*x)

产生均值为

μ+σx,产生均值为μ,方差为σ^2的随机数

用于专门学科的矩阵:

(1)魔方矩阵,每行每列及主副对角线元素和相等ps:和为(1+2+3+……n^2)/n=(n+n^3)/2          用migic()来创建

(2)范德蒙矩阵用vander(V)生成以V为基础的范德蒙矩阵,同行前项等于后项的平方,常用于通信系统的纠错编码

(3)希尔伯特矩阵H(i,j)=1/(i+j+1),生成的函数是hilb(n)特点是任何一个元素发生较小的变动,整个矩阵的值和逆矩阵都会发生大变化,阶数+,病态程度+++

(4)伴随矩阵compan(p),其中,p是一个多项式的系数向量,高次幂系数排在前,低次幂系数排在后

A*A/|A|=A^-1

(5)杨辉三角矩阵(帕斯卡矩阵):第一行第一列全为1,右下项等于左项加上项

pascal(n)

矩阵的变换:

1.     对角阵:一定是方阵啊啊啊啊啊啊啊啊

a)       对角矩阵:只有对角线上有非零元素

b)      数量矩阵:对角线上的元素相等的矩阵

c)       单位矩阵:对角线上的元素都为1的对角矩阵

函数diag重载程度比较高,如diag(1:5),放入一个向量就可以产生对角线上为1~5的5*5矩阵

2.     三角阵

a)       上三角阵:triu(A)提取矩阵A对角线及以上的元素,triu(A,k)提取矩阵A第k条主对角线及以上的元素

b)      下三角阵:tril()函数,用法相同

3.     转置

a)       运算符是小数点后面接单引号.’

b)      共轭转置的运算符是’,一个单引号,转置的基础上取每个数的复共轭

4.     旋转

a)       rot90(A,K)将矩阵A逆时针方向旋转90°的k倍,k=1可以省略

5.     翻转

a)       fliplr(A)对矩阵A实施左右翻转

b)      flipud(A)上下翻转

6.     求逆

a)       inv(A)    or   A^-1

矩阵的数量特征

1.     行列式det(A)

2.     秩rank(A)

3.     迹trace()

4.     范数norm

5.     条件数