Matlab:矩阵运算篇——矩阵

目录

1.定义

实例------创建矩阵

实例------创建复数矩阵

2.矩阵的生成

实例------M文件矩阵

2.利用文本创建

实例------创建生活用品矩阵

3.创建特殊矩阵

实例------生成特殊矩阵

4.矩阵元素的运算

1.矩阵元素的修改

实例------新矩阵的生成

2.矩阵的变维

实例------矩阵维度修改

3.矩阵的变向

实例------矩阵的变向


1.定义

Matlab以矩阵作为数据操作的基本单位。矩阵是由m*n个数aij(i=1,2,...,m;j=1,2,...,n)排成的m行n列数表,记成。称为m*n矩阵,也可以记成或者。i表示行数,j表示列数,若m=n,则该矩阵为n阶矩阵(n阶方阵)。

用这个方法创建矩阵时,需要注意以下几点:

  • 输入矩阵时要以[]为其标识符;
  • 矩阵同行元素之间由空格(个数不限)或逗号分隔,行与行之间用分号或回车键分隔;
  • 矩阵大小不需要预先定义;
  • 若[]中无元素,表示空矩阵;
  • 如果不想显示中间结果,可以用分号结束。

实例------创建矩阵

创建元素均是15的3*3矩阵。matlab程序如下:

Matlab 复制代码
>>a=[15 15 15;15 15 15;15 15 15]
a=
   15 15 15
   15 15 15
   15 15 15

实例------创建复数矩阵

创建包含复数的矩阵A,其中,,matlab程序如下:

Matlab 复制代码
>> A=[[1,1+i,2];[2,3+2i,1]]

A =

   1.0000 + 0.0000i   1.0000 + 1.0000i   2.0000 + 0.0000i
   2.0000 + 0.0000i   3.0000 + 2.0000i   1.0000 + 0.0000i

2.矩阵的生成

矩阵的生成除了直接输入法,还可以利用M文件生成法和文本文件生成法等。

1.利用M文件创建

当矩阵的规模比较大时,直接输入法就显得笨拙,出差错也不易修改。为了解决这些问题,可以将所要输入的矩阵按格式先写入一文本文件中,以m为其扩展名,即M文件。

M文件是一种可以在matlab 环境下运行的文本文件,它可以分为命令式文件和函数式文件两种。在此处主要用到的是命令式M文件,用它的简单形式来创建大型矩阵。在matlab 命令行窗口中输入M文件名,所要输入的大型矩阵即可被输入到内存中。

实例------M文件矩阵

(1)编制一个名为gmatrix的矩阵。

(2)在M文件编辑器中编制一个名为sample.m的M文件。

(注:M文件中的变量名与文件名不能相同,否则会造成变量名和函数名混乱。)

Matlab 复制代码
>> sample.M
gmatrix=[378 89 90 83 382 92 29;
3829 32 9283 2938 378 839 29;
388 389 200 923 920 92 7478;
3829 892 66 89 90 56 8980;
7827 67 890 6557 45 123 35]

(3)运行M文件。在matlab命令行窗口中输入文件名,结果如下:

Matlab 复制代码
>> sample

gmatrix =

         378          89          90          83         382          92          29
        3829          32        9283        2938         378         839          29
         388         389         200         923         920          92        7478
        3829         892          66          89          90          56        8980
        7827          67         890        6557          45         123          35

2.利用文本创建

即在文件夹(通常为work文件夹)中建立txt文件,在命令行窗口中直接调用这个文件名即可。

实例------创建生活用品矩阵

日用商品在三家商店中有不同的价格,其中,毛巾有三种3.5元、4元,5元;脸盆10元,15元,20元;单位量的售价用矩阵表示(行表示商店,列表示商品),用文本文件创建矩阵x。

(1)事先在记事本中建立文件并输入

Matlab 复制代码
3.5 4 5
10 15 20

(2)以goods.txt保存,在命令行窗口中输入

Matlab 复制代码
>> goods

goods =

    3.5000    4.0000    5.0000
   10.0000   15.0000   20.0000

由创建商品矩阵X。

3.创建特殊矩阵

可以直接用函数来生成某些特定的矩阵,以下是常用函数:

|----------------|---------------------------------|
| eye(n) | 创建n*n单位矩阵 |
| eye(m,n) | 创建m*n单位矩阵 |
| eye(size(A)) | 创建与A维数相同的单位阵 |
| ones(n) | 创建n*n全1矩阵 |
| ones(m*n) | 创建m*n全1矩阵 |
| one(size(A)) | 创建与A维数相同的全1阵 |
| zeros(m*n) | 创建n*n全0矩阵 |
| zeros(size(A)) | 创建与A维数相同的全0矩阵 |
| rand(n) | 在[0,1]区间内创建一个n*n均匀分布的随机矩阵 |
| rand(m*n) | 在[0,1]区间内创建一个m*n均匀分布的随机矩阵 |
| rand(size(A)) | 在[0,1]区间内创建一个与A维数相同的均匀分布的随机矩阵 |
| compan(P) | 创建系数向量是 P的多项式的伴随矩阵 |
| diag(v) | 创建一向量v中的元素为对角的对角阵 |
| hilb(n) | 创建n*n的Hilbert矩阵 |
| magiic(n) | 生成n阶魔方矩阵 |
| sparse(A) | 将矩阵A转化为稀疏矩阵形式 |
| | |
| | |

实例------生成特殊矩阵

Matlab 复制代码
>> zeros(3)

ans =

     0     0     0
     0     0     0
     0     0     0

>> zeros(3,2)

ans =

     0     0
     0     0
     0     0

>> ones(3,2)

ans =

     1     1
     1     1
     1     1

>> ones(3)

ans =

     1     1     1
     1     1     1
     1     1     1

 
>> rand(3)

ans =

    0.8147    0.9134    0.2785
    0.9058    0.6324    0.5469
    0.1270    0.0975    0.9575

>> rand(3,2)

ans =

    0.9649    0.9572
    0.1576    0.4854
    0.9706    0.8003

>> magic(3)

ans =

     8     1     6
     3     5     7
     4     9     2

>> hilb(3)

ans =

    1.0000    0.5000    0.3333
    0.5000    0.3333    0.2500
    0.3333    0.2500    0.2000

>> invhilb(3)

ans =

     9   -36    30
   -36   192  -180
    30  -180   180

>> 

4.矩阵元素的运算

1.矩阵元素的修改

矩阵中的元素与向量中的元素一样,可以进行抽取引用,编辑修改等操作。

|----------------------------------------------|--------------------------------------|
| 命令名 | 说明 |
| D=[A;B C] | A是原矩阵,B,C中包含要扩充的元素,D为扩充后的矩阵 |
| A(m,:)=[] | 删除A的第m行 |
| A(:,n)=[] | 删除A的第n行 |
| A(m,n)=a;A(m,:)=[a b...];A(:,n)=[a b...] | 对A的第m行第n列的元素赋值;对A的第m行的元素赋值;对A的第n列赋值; |
[矩阵元素修改命令]

实例------新矩阵的生成

修改矩阵元素,创建新矩阵

Matlab 复制代码
>> A=[1 2 3;4 5 6];
B=eye(2);
C=zeros(2,1);
D=[A;B C]

D =

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

>> 

2.矩阵的变维

可以用符合:法和reshape函数法。reshape函数的调用形式如下:reshape(X,m,n),将已知矩阵变维成m行n列的矩阵。

实例------矩阵维度修改

演示矩阵的维度变换

Matlab 复制代码
>> A=1:12;
B=reshape(A,2,6)

B =

     1     3     5     7     9    11
     2     4     6     8    10    12

>> C=zeros(3,4);
C(:)=A(:)

C =

     1     4     7    10
     2     5     8    11
     3     6     9    12

>> 

3.矩阵的变向

|-----------------|--------------------------|
| Rot(90) | 将A逆时针方向旋转90° |
| Rot(90,K) | 将A逆时针方向旋转90°,k可以是正整数或负整数 |
| Fliplr(X) | 将X左右翻转 |
| flipud(X) | 将X上下翻转 |
| flipdim(X,dim)q | dim=1时对行翻转,dim=2时对列翻转 |
| | |
| | |
[矩阵变相命令]

实例------矩阵的变向

Matlab 复制代码
>> A=1:12;
C=zeros(3,4);
C(:)=A(:)

C =

     1     4     7    10
     2     5     8    11
     3     6     9    12

>> flipdim(C,1)

ans =

     3     6     9    12
     2     5     8    11
     1     4     7    10

>> flipdim(C,2)

ans =

    10     7     4     1
    11     8     5     2
    12     9     6     3

>> 
相关推荐
通信小呆呆1 分钟前
5G/6G时代的智能超表面:如何重构无线传播环境?
5g·重构·信息与通信·信号处理·超表面
luckys.one1 小时前
第9篇:Freqtrade量化交易之config.json 基础入门与初始化
javascript·数据库·python·mysql·算法·json·区块链
~|Bernard|3 小时前
在 PyCharm 里怎么“点鼠标”完成指令同样的运行操作
算法·conda
战术摸鱼大师3 小时前
电机控制(四)-级联PID控制器与参数整定(MATLAB&Simulink)
算法·matlab·运动控制·电机控制
Christo33 小时前
TFS-2018《On the convergence of the sparse possibilistic c-means algorithm》
人工智能·算法·机器学习·数据挖掘
阿巴Jun4 小时前
【数学】线性代数知识点总结
笔记·线性代数·矩阵
好家伙VCC4 小时前
数学建模模型 全网最全 数学建模常见算法汇总 含代码分析讲解
大数据·嵌入式硬件·算法·数学建模
liulilittle6 小时前
IP校验和算法:从网络协议到SIMD深度优化
网络·c++·网络协议·tcp/ip·算法·ip·通信
bkspiderx7 小时前
C++经典的数据结构与算法之经典算法思想:贪心算法(Greedy)
数据结构·c++·算法·贪心算法
星马梦缘8 小时前
Matlab机器人工具箱使用2 DH建模与加载模型
人工智能·matlab·机器人·仿真·dh参数法·改进dh参数法