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

>> 
相关推荐
Nil2086 小时前
leetcode 198打家劫舍
算法·leetcode·职场和发展
Shaoshing6 小时前
前缀和与差分
java·数据结构·算法·前缀和·差分
loulanyue_7 小时前
构建房产认知决策智能:Harness底座与AI自进化的技术实践——读贝壳首席算法科学家尹俊希2026云栖专场演讲
人工智能·算法
碧海银沙音频科技研究院7 小时前
基于炬芯ATS录音卡BLE控制协议
人工智能·嵌入式硬件·算法·语音识别
suhan7 小时前
【数据结构】三、栈和队列:6.链队列、双端队列、队列的应用(树的层次遍历、广度优先BFS、先来先服务FCFS)
数据结构·后端·算法
姜鱼问生8 小时前
Docker Volume 备份与恢复实战:不停机迁移数据
后端·算法·架构
suhan8 小时前
【数据结构】三、栈和队列:5.顺序队列(循环队列)(初始化,判空判满,入队,出队,实例)
数据结构·后端·算法
suhan8 小时前
【数据结构】三、栈和队列:3.链栈(链栈栈的初始化,判空,进栈,出栈,读取栈顶,链栈实例)
数据结构·后端·算法
大雄很用心8 小时前
如何理解时间复杂度与空间复杂度?| 面试刷题笔记02
算法
姜鱼问生8 小时前
服务器磁盘满了?从告警到清理的完整排查
后端·算法·架构