一、 实验目的
1.掌握矩阵和数组的一般操作,包括创建、保存、修改和调用等。
2.学习矩阵和数组的加减运算与乘法。
3.掌握对数组中元素的寻访与赋值,会对数组进行一般的操作。
二、 预备知识
1.常用的产生特殊矩阵的函数
•eye(m,n)  单位阵
•rand(m,n)  随机矩阵
•randn(m,n)  正态分布的随机矩阵
•zeros(m,n)  零矩阵
•ones(m,n)  全部元素都为1的矩阵
•compan(A)  矩阵A的伴随矩阵
•bankel(m,n)  n维Hankel矩阵
•invhilb(n)  n维逆Hilbert矩阵
•magic(n)  n维Magic矩阵
•toeplitz(m,n)  Toeplitz矩阵
•wilkinson(n)  n维Wilkinson特征值测试矩阵
•handamard(n)  n维Handamard矩阵
•hilb(n)  n维Hilbert矩阵
•kron(A,B)  Kronecker张量积
•pascal(n)  n维Pascal矩阵
•vander(A)  由矩阵A产生Vandermonde矩阵
2.通过矩阵的结构变换,获得新矩阵
表2 矩阵结构变化产生新矩阵
L=tril(A)
L主对角线及以下元素取矩阵A 的元素,其余为0
L=tril(A,k)
L及第k条对角线及以下元素取矩阵A的元素,其余为0
U=triu(A)
U主对角线及以上的元素取矩阵A的元素,其余为0
U=triu(A,k)
Uk条对角线及以上的元素取矩阵A的元素,其余为0
B=rot90(A)
矩阵A逆时针旋转90°得到B
B=rot90(A,k)
矩阵A逆时针旋转k*90°得到B
B=fliplr(A)
矩阵A左右翻转得到B
B=flipud(A)
矩阵A上下翻转得到B
B=reshape(A,m,n)
将矩阵A的元素重新排列,得到m*n的新矩阵(m*n就等于A的行列式之积。若A3*4,则mn可为2643
3.数组(矩阵)操作
对数组或矩阵的基本操作有插入、重新排列、提取、按列拉长、置空(去掉某行或某列)、置零、用单信下标操作一个矩阵,用逻辑数组操作一个矩阵、按指定条件求子数组,求数组的规模等,下面一一举例说明(对数组和矩阵不加区别)。
X=4:6  x=4 5 6
①插入      通过对x进行插入运算创建矩阵A
A=[x-3;x;x+3]    A=1 2 3
                  4 5 6
matlab数组赋值                  7 8 9
②重新排列    以逆序重排A的各行形成矩阵B
B=A(3:-1:1,1:3)    B=7 8 9
                      4 5 6
                      1 2 3
③提取    提取A的前两行的后两列形成矩阵C
    C=A(1:2,2:3)    C=2 3
                      5 6
④按列拉长    对C按列拉长形成矩阵D
D=C(:)  D=2
          5
          3
          6
⑤置空    删除B的第2 列
B(:,2)=[]  B=7 9
              4 6
              1 3
⑥置零    将矩阵B的第2行第2列的元素置为1
B[2,2]=0  B=7 9
              4 0
              1 3
⑦用单个下标操作一个矩阵
MATLAB对矩阵中的元素赋予一个序号,序号值按列从第1列第1行到第1列第2行到第2列第1行到第2列第2行,直至最后一列最后一行的顺序计数。
B(3)      ans=1
B(5)    ans=0
B(2:4)  ans=4 1 9
⑧用逻辑数组操作一个矩阵
x=-4:4  x=-4 –3 –2 –1 0 1 2 3 4
%判断数组中的元素的绝对值大于3的情况,绝对值大于3的元素置为1,否则为0。
abs(x)>3  ans=1 0 0 0 0 0 0 0 1
对矩阵可进行同样操作:
A=[1,2,3;4,5,6;7,8,9]    A=1 2 3
                              4 5 6
                              7 8 9
abs(A)>3  ans=0 0 0
                  1 1 1
                  1 1 1
⑨按指定条件求子数组
首先由条件表达式生成一个逻辑数组,然后使用系统提供的函数即可,函数在已知数组中按逻辑数组的元素值查所需的元素下标。
a=abs(x)>2      a=1 1 0 0 0 0 0 1 1
b=find(a)      b=1 2 8 9
y=x(b)  y=-4 –3 3 4
函数find也可用于矩阵。
A=[1:3;4:6;7:9]  A=1 2 3
                        4 5 6
                        7 8 9
B=A>4            B=0 0 0
                        0 1 1
                        1 1 1
[r,s]=find(B)      r=3        s=1
                        2          2
                        3          2
                        2          3
                        3          3
三、 实验内容与步骤
1.用三种方法创建一个3×3矩阵,然后利用矩阵编辑器,将其扩充为4×5矩阵,并保存,试着调用它。
直接输入法
如在命令区输入A=[3,2,1;4,5,6;7,8,9]。
直接利用MATLAB提供的函数创建一个3×3矩阵
如在命令区输入rand(3,3)即得到一个3×3的随机矩阵。
利用MATLAB提供的“Matrix Editor”完成输入
步骤1 在命令区输入A=1。
步骤2 用鼠标单击工具栏的工作区浏览器,MATLAB弹出变量浏览器,选中变量A,鼠标左键双击A,打开矩阵编辑器。
步骤3 在左下脚的两个文本框中分别输入希望得到的矩阵的行数和列数:3行3列,即得到一个3×3矩阵。
步骤4 要将上面矩阵改为一个4×5矩阵,只需改变矩阵的行数和列数即可。如将3行3列改为4行5列,即可得到一个4×5矩阵。若想修改其中的元素,只需用鼠标选中表格中我们想要修改的元素,将原来的元素修改为我需要的值。
步骤5 要命令区输入save data A(data为我们给变量文件起的名称,系统会自动沿设定好的路径以“.mat”格式存储文件),即可保存上面例子中创建的矩阵A。
步骤6 在命令区输入load data即可把保存在文件中的矩阵读到MATLAB的工作区的内存中来。
           
建立一个等差数列,然后由它产生一个对角阵。
步骤1 在命令区输入a=linspace(0,1.5,5)产生一个等差数列。
步骤2 在命令区输入B=diag(a)产生一个对角阵。
3.利用MATLAB的函数inv(A)求方阵A的逆矩阵。
步骤1 在命令区输入A=[1,2;5,6]得到一个2×2的方阵。
步骤2 再输入B=inv(A)求出A 的逆矩阵。
四、 练习
创建一个5×5矩阵,提取主对角线以上的部分。
   
A=rand(3),B=magic(3),C=rand(3,4),计算A×B×C
创建一个3×3矩阵,并求其转置,逆矩阵。
   
用两种方法求Ax=b的解(A为4阶随机矩阵,b为4阶列向量)。
   
创建一个4阶随机矩阵A,计算
   
五、 实验分析
矩阵和数组操作实验比较麻烦,容易搞混,尤其是它的各种运算
六、 实验总结
矩阵和数组是比较相似,容易搞混的两个概念,特别是它的一些运算,但矩阵和数组操作是非常有用的在MATLAB中,它们可以直接解决一些简单的问题。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。