第2章 MATLAB基本运算及程序设计MATALB是一门计算语言,矩阵是进行数据处理和运算的基本元素,它的运算指令和语法基于一系列基本的矩阵运算以及它们的扩展运算。MATLAB中的符号数学工具箱可以用于实现符号运算,该工具箱不是基于矩阵的数值分析,而是使用字符串来进行符号分析与运算。在MATLAB中,除了可以在命令窗口输入命令逐句执行外,也可以和其他形式的语言一样采用编程的方式。学习目标:1.理解矩阵运算的基本原理、实现步骤。2.了解关系运算和逻辑运算及变量表达的相关内容。3.理解M文件与M函数的相关内容。4.掌握MATLAB程序流程控制语句相关结构、实现步骤。

        >>A=[1  21  3;42  5  6;7  8  91]
        A=
            1   21    3
            42    5    6
            7    8   91

2.1 矩阵的创建在MATLAB中,矩阵是进行数据处理和运算的基本元素,矩阵的创建方法主要有4种:直接输入法、利用M文件建立矩阵、利用其他文本编辑器建立矩阵、利用MATLAB内置函数建立矩阵。下面将对这些方法进行介绍。2.1.1 直接输入法从键盘直接输入矩阵的元素是最简单的建立矩阵的方法:将矩阵的元素用方括号括起来,按矩阵行的顺序输入各元素,同一行的各元素之间用空格或逗号分隔,不同行的元素之间用分号分隔。在此方法下创建矩阵需要注意以下规则:(1)矩阵元素必须在“[ ]”内;(2)矩阵的同行元素之间用空格(或“,”)隔开;(3)矩阵的行与行之间用“;”(或回车符)隔开。【例2-1】下面的例子是用直接输入的方法来创建矩阵的。

        >>B=[3   5   6;
            23  56  78;
            99  87   1]
        B=
            3    5    6
            23   56   78
            99   87    1

2.1.2 利用M文件建立矩阵在MATLAB中,可以利用系统自带的文本编辑调试器专门建立一个M文件。启动有关编辑程序或MATLAB文本编辑器,并输入待建矩阵,例如:

        A=[13  21  56;42  5  80;7  76  91]

把输入的内容以纯文本方式存盘(设文件名为mymatrix.m)。在MATLAB命令窗口中输入mymatrix:

        >> mymatrix
        A=
            13   21   56
            42    5   80
            7   76   91

运行该M文件,就会自动建立一个名为MYMAT的矩阵,可供以后使用。2.1.3 利用其他文本编辑器建立矩阵在MATLAB中,也可以利用其他文本编辑器来创造矩阵。例如,编辑一个文本文件:

        16.0  3.0   2.0   9.0
        5.0   10.0  11.0  8.0
        9.0   6.0   7.0   12.0
        4.0   15.0  14.0  1.0

将该文本装入dat或txt等格式的文件。如果需要该文件,可以在命令窗口输入:

        clear all;
        load trees
        image(X)

第2章 MATLAB基本运算及程序设计_内置函数

2.1.4 利用MATLAB内置函数建立特殊矩阵在MATLAB中,系统内置函数可以用于建立特殊矩阵,通过这些函数,可以很方便地得到想要的特殊矩阵。系统内置创建特殊矩阵的函数如表2-1所示。表2-1 系统内置的创建矩阵的特殊函数

第2章 MATLAB基本运算及程序设计_2.2矩阵的拼接_02

【例2-3】利用几种系统内置特殊函数来创建矩阵。

【例2-3】利用几种系统内置特殊函数来创建矩阵。

        >>Z=zeros(5,4)% 产生5×4全为0的矩阵
        Z=
            0    0    0    0
            0    0    0    0
            0    0    0    0
            0    0    0    0
            0    0    0    0
        >>Z=ones(5,4)% 产生5×4全为1的矩阵
        Z=
            1    1    1    1
            1    1    1    1
            1    1    1    1
            1    1    1    1
            1    1    1    1
        >>Z=eye(5,4)% 产生5×4的单位矩阵
        Z=
            1    0    0    0
            0    1    0    0
            0    0    1    0
            0    0    0    1
            0    0    0    0
        >>rand(5,4)% 产生5×4的在(0,1)区间均匀分布的随机阵
        ans =
            0.9572   0.9157   0.8491   0.3922
            0.4854   0.7922   0.9340   0.6555
            0.8003   0.9595   0.6787   0.1712
            0.1419   0.6557   0.7577   0.7060
            0.4218   0.0357   0.7431   0.0318
        >>randn(5,4)% 产生5×4的均值为0,方差为1的标准正态分布随机矩阵
        ans =
          -1.0689   -0.7549   0.3192   0.6277
          -0.8095   1.3703   0.3129   1.0933
          -2.9443   -1.7115   -0.8649   1.1093
            1.4384   -0.1022   -0.0301   -0.8637
            0.3252   -0.2414   -0.1649   0.0774
        >>hilb(3)% 产生3维的Hilbert阵
        ans =
            1.0000   0.5000   0.3333
            0.5000   0.3333   0.2500
            0.3333   0.2500   0.2000
        >>Z=magic(3)% 产生3阶的魔方阵
        Z=
            8    1    6
            3    5    7
            4    9    2

2.2 矩阵的拼接两个或者两个以上的单个矩阵,按一定的方向进行连接生成新的矩阵,就是矩阵的拼接。矩阵的拼接是一种创建矩阵的特殊方法,它的基础元素是原始矩阵,目标是新的合并矩阵。2.2.1 基本拼接矩阵的拼接有按照水平方向拼接和按照垂直方向拼接两种方式。例如,对矩阵A和B进行拼接,拼接表达式分别如下。水平方向拼接:C=[A B]或C=[A, B]。垂直方向拼接:C=[A; B]。【例2-4】把3阶魔术矩阵和3阶单位矩阵在水平方向和垂直方向上分别拼接成一个新矩阵。

        >>clear  all;
        c= magic(3)%3阶魔术矩阵
        d = eye (3)% 3阶单位矩阵
        E=[c, d]% 水平方向上拼接
        F=[c; d]% 垂直方向上拼接

运行结果如下:

        c=
            8    1    6
            3    5    7
            4    9    2
        d=
            1    0    0
            0    1    0
            0    0    1
        E=
            8    1    6    1    0    0
            3    5    7    0    1    0
            4    9    2    0    0    1
        F=
            8    1    6
            3    5    7
            4    9    2
            1    0    0
            0    1    0
            0    0    1

2.2.2 拼接函数在MATLAB中,除了使用矩阵拼接符[]外,还可以使用矩阵拼接函数来拼接函数。具体的函数和功能如表2-2所示。表2-2 MATLAB中矩阵拼接函数

第2章 MATLAB基本运算及程序设计_2.2矩阵的拼接_03

        >>clear all;
        A1=[1 2;3 4]
        A2=[5 6;7 8]
        C1=cat(1, A1, A2) %垂直拼接
        C2=cat(2, A1, A2) %水平拼接
        C3=cat(3, A1, A2)%三维数组

运行结果如下:

        A1 =
            1    2
            3    4
        A2 =
            5    6
            7    8
        C1 =
            1    2
            3    4
            5    6
            7    8
        C2 =
            1    2    5    6
            3    4    7    8
        C3(:, :,1) =
            1    2
            3    4
        C3(:, :,2) =
            5    6
            7    8