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. 条件数