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

>> 
相关推荐
Juan_201227 分钟前
P1040题解
c++·算法·动态规划·题解
Onesoft%J1ao29 分钟前
C++竞赛递推算法-斐波那契数列常见题型与例题详解
c++·算法·动态规划·递推·信息学奥赛
以己之1 小时前
NC313 两个数组的交集
算法·哈希算法
Brookty1 小时前
【算法】前缀和
java·学习·算法·前缀和·动态规划
And_Ii1 小时前
LeetCode 3397. 执行操作后不同元素的最大数量
数据结构·算法·leetcode
额呃呃1 小时前
leetCode第33题
数据结构·算法·leetcode
隐语SecretFlow2 小时前
【隐语SecretFlow用户案例】亚信科技构建统一隐私计算框架探索实践
科技·算法·安全·隐私计算·隐私求交·开源隐私计算
dragoooon342 小时前
[优选算法专题四.前缀和——NO.27 寻找数组的中心下标]
数据结构·算法·leetcode
少许极端2 小时前
算法奇妙屋(七)-字符串操作
java·开发语言·数据结构·算法·字符串操作
北京耐用通信2 小时前
破解工业通信瓶颈:耐达讯自动化Modbus转Profinet网关连接驱动器的奥秘
人工智能·物联网·网络协议·自动化·信息与通信