MATLAB 小知识 第二篇 矩阵运算1

1. 矩阵的创建

使用逗号 “,”或者空格 “ ” 分隔矩阵的列; 使用分号 “;”或者 回车键来分隔矩阵的行!

如  A = [1,1,1; 2 2 2

3 3 3;4 4,4];注意一行中可以出现空格与逗号的联合使用。还有如果在命令行中输入该命令时,在换行的时候不能直接按 Enter键,在matlab中Enter是执行键,我们需要按 Shift+Enter就可以实现换行了!

2.矩阵中的元素必须是数字或者值已经确定的变量和表达式。(没试过变大事或者已赋值变量的可试试)

3。矩阵构造符[]只能用来生成二维矩阵,不能创建高维数组。

4.几种不常用的矩阵构造函数

    rand     均匀分布随机矩阵

    randn    正态分布随机矩阵

    diag     对角矩阵   (还可以计算一个矩阵的迹)

    compan   伴随矩阵

    gallery  测试矩阵

    hadamard Hadamard矩阵

    hilb     Hilbert矩阵

    invhilb  Hilbert转置矩阵

    rosser   经典对阵特征值测试矩阵

    toeplitz Toeplitz矩阵

    pascal   Pascal 矩阵

    vander   Vandernonde矩阵

    wilkinson  Wilkinson 特征值测试矩阵

>> diag(eye(4))


ans =


     1
     1
     1
     1


>> diag(ans)


ans =


     1     0     0     0
     0     1     0     0
     0     0     1     0
     0     0     0     1


>> a = [ 1 2 3];
>> diag(a,-1)         %对角线元素的偏移


ans =


     0     0     0     0
     1     0     0     0
     0     2     0     0
     0     0     3     0

5.矩阵的拼接

水平拼接:C = [A B] or C = [A,B] or horzcat函数 or cat(2,A,B)

垂直拼接:C = [A;B] or vertcat函数 or cat(1,A,B)

repmat函数

W = eye(2)


W =


     1     0
     0     1


>> Y = repmat(W,2,3)


Y =


     1     0     1     0     1     0
     0     1     0     1     0     1
     1     0     1     0     1     0
     0     1     0     1     0     1

新矩阵Y可以看成2*3的矩阵,每一个“元素”都是矩阵W。

blkdiag函数:用现有矩阵构造对角阵  

 a = [1,2,3; 2 3 4];
>> b = [1 2;3,4;5 6];
>> blkdiag(a,b)


ans =


     1     2     3     0     0
     2     3     4     0     0
     0     0     0     1     2
     0     0     0     3     4
     0     0     0     5     6

矩阵a,b不用是方阵,也不需要尺寸对应。

6.改变矩阵尺寸

a = magic(3);  缩小 a(:,3) = [] 小了一列; 扩大 a(:,4) = 3;大了一列

注意:a(2,1) = [];是不对的,在线性下标下可以用该方法删除一个或多个元素,得到矩阵的剩余元素排列成为行向量 a(1:3:end) = [] 是可以的。结果

 a =

    3     4     5     9     7     2

7.改变矩阵形状的函数

reshape    重新排列矩阵

rot90      矩阵逆时针旋转90度

fliplr     垂直方向为轴翻转矩阵

flipud     水平方向为轴翻转矩阵

flipdim    指定方向为轴翻转矩阵


A= magic(3)


A =


     8     1     6
     3     5     7
     4     9     2


>> B = reshape(A,1,9)


B =


     8     3     4     1     5     9     6     7     2

在使用reshape函数,由A矩阵线性排列转化为B矩阵,在转化为矩阵B时,按列排列  下面代码验证

C = magic(4)


C =


    16     2     3    13
     5    11    10     8
     9     7     6    12
     4    14    15     1


>> D = reshape(C,2,8)


D =


    16     9     2     7     3     6    13    12
     5     4    11    14    10    15     8     1


fliplr 和 flipud在翻转时以矩阵的中心行列为轴!当行列为奇数时,中心轴不变位置,当行列为偶数时,其实中心轴为是无形的 例:

fliplr(A)


ans =


     6     1     8
     7     5     3
     2     9     4      奇数: 红色的列为中心轴

fliplr(C)


ans =

              
    13     3  |   2    16
     8    10  |  11     5
    12     6  |   7     9
     1    15  |  14     4    偶数:红线为中心轴!

8. 函数linspace and logspace

linspace(a,b) 生成一个首尾分别为a和b的100个数

linspace(a,b,n) 生成一个首尾分别为a和b的n个数

  1. logspace(a,b)  在[10的a次幂,10的b次幂]区间生成50个差值相等的数,并且返回50个数以10为底的幕组成的行向量
  2. logspace(a,b,n)跟上面差别不大,只是该形式生成n个等差的数且返回!
9.空矩阵和 0矩阵不是一个概念!前者是没有元素,后者是元素均为0.
10.两个空矩阵的拼接为空矩阵,一个非空矩阵和一个空矩阵的拼接,结果为非空矩阵本身!

该文主要用于记录本人的学习,如果对您有所帮助,乃是我的荣幸!该文均为本人学习过程中手打,如有错误还请指出,谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值