实验二  一维二维数组的创建和寻访
一、实验目的
1、掌握一维数组、二维数组创建和寻访的几种方法。
2、区别数组运算和矩阵运算的差别。
3、熟悉执行数组运算的常用数组操作函数。
4、掌握数组运算中的关系和逻辑操作及常用的关系、逻辑函数。
5、掌握非数数组在MATLAB中的应用。
二、实验主要仪器与设备
装配有MATLAB7.6软件的计算机
三、预习要求
做实验前必须认真复习第三章MATLAB的数值数组及向量化运算功能。
四、实验内容及实验步骤
1、一维数组的创建方法有哪几种?举例说明。
答:(1)“冒号”生成法;(2)线性(或对数)定点法;(3)逐个元素输入法;(4)运用MATLAB函数生成法。
例子:b1=linspace(0,pi,4)
      b2=logspace(0,3,4)
运行结果:
b1 =
        0    1.0472    2.0944    3.1416
b2 =
          1          10        100        1000
2、根据要求补充输入指令,并写出运行结果。本例演示:数组元素及子数组的各种标识和寻访格式;冒号的使用;end的作用。
A=  zeros(2,6)    %创建(2×6)的全零数组
A(:)=1:12        %赋值号左边:单下标寻访(2×6) 数组A的全部12个元素
                %赋值号右边:拥有12个元素的一维数组
A(  2,4   )    %双下标:A数组的第2行第4列元素
A(8)            %单下标:数组A的第8个元素
A(: , [1,3])    %双下标:显示A的“第1列和第3列上全部行的元素”
A([1, 2, 5, 6]')  %单下标:把A数组第1,2,5,6个元素排成列向量
A(: , 4:end)    %双下标:显示A的“从第4起到最后一列上全部行的元素”
              %在此end用于“列标识”,它表示“最后一列”
A(2,1:2:5)=[-1, -3, -5]    %把右边的3个数分别赋向A数组第2行的第1,3,5个元素位置
B=A([1, 2, 2, 2], [1, 3, 5])  %A数组的1,3,5列的第1行元素作为B的第1
                        %A数组的1,3,5列的第matlab数组赋值2行分别作为B的第2,3,4
L=A<3      %产生与A维数相同的“01”逻辑数组
A(L)=NaN    %把逻辑1标识的位置上的元素赋为“非数”
运行结果:
            A =
                0    0    0    0    0    0
                0    0    0    0    0    0
A =
              1    3    5    7    9    11
                2    4    6    8    10    12
ans =
                8
ans =
                  8
ans =
                1    5
                2    6
ans =
    1
                2
                5
                6
  ans=
                7    9    11
                8    10    12
A =
    1    3    5    7    9    11
                -1    4    -3    8    -5    12
B =
    1    5    9
                -1    -3    -5
                -1    -3    -5
                -1    -3    -5
L =
    1    0    0    0    0    0
                1    0    1    0    1    0
A =
  NaN    3    5    7    9    11
                NaN    4  NaN    8  NaN    12
3、补充输入以下指令,写出运行结果并说明reshapediagrepmatflipudfliplrrot90的作用。本例演示:数组操作函数的用法;空阵[ ]删除子数组的用法。
        a=    1:8             %产生(1×8)一维数组
        A=reshape(a, 4, 2)    %将一维数组a重排成(4×2)的二维数组
        A=  reshape(A,2,4)      %再把(4×2)数组重组成(2×4)数组
        b=diag(A)    %(2×4)数组的对角元素形成(2×1)列数组
        B=  diag(A)    %(2×1)列数组构造 (2×2)对角阵
        D1=repmat(B, 2, 4)  %把数组B当作模块,按(2×4)形式排放该模块,形成(4×8)数组
        A=reshape(1:9, 3, 3)  %19重排成(3×3)数组
        B=flipud(A)  %上下对称交换
        C=fliplr(A)    %左右对称交换
        D=  rot90(A,2)      %旋转1800
运行结果:
a =
    1    2    3    4    5    6    7    8
A =
    1    5
    2    6
    3    7
    4    8
A =
    1    3    5    7
    2    4    6    8
b =
    1
    4
B =
    1
    4
D1 =
    1    1    1    1
    4    4    4    4
    1    1    1    1
    4    4    4    4
A =
    1    4    7
    2    5    8
    3    6    9
B =
    3    6    9
    2    5    8
    1    4    7
C =
    7    4    1
    8    5    2
    9    6    3
D =
    9    6    3
    8    5    2
    7    4    1
4、输入以下指令,写出运行结果。本例演示:逻辑操作和关系操作。
        A=[-2, -1, 0, 0, 1, 2, 3]  %产生一维数组
        L1=  (A>1)              %判断A中,哪些元素不大于1
        L2=(A>0)&(A<3)      %判断A中,哪些元素大于0且小于3
        A, B=[0, -1, 1, 0, 1, -2, -3]
        C=  xor(A,B)       %AB数组中,两个对应元素中仅一个为0时,给出1。否则为0.
运行结果:
A =
    -2    -1    0    0    1    2    3
L1 =
    0    0    0    0    0    1    1
L2 =
    0    0    0    0    1    1    0
A =
    -2    -1    0    0    1    2    3
B =
    0    -1    1    0    1    -2    -3
C =
    1    0    1    0    0    0    0
五、实验报告与思考题
按实验内容及实验步骤书写实验报告并思考以下问题:
1、 MATLAB中的数组运算和矩阵运算是同一种运算吗?
答:MATLAB中的数组运算和矩阵运算是两种不同的运算,其运算符号和运算规则都有所不同。
2MATLAB总把数组看作存储和运算的基本单元,标量数据能作为数组处理吗?
答;标量数据可以看成是1×1的数组数据。
3、试说明二维数组创建和寻访的方法。
答:①小规模数组的直接输入法:
·整个输入数组必须以方括号“[ ]”为其首尾;
·数组的行与行之间必须用分号“;”或回车键[Enter]隔离;
·数组元素必须由逗号“,”或空格分隔。
②中规模数组的数组编辑器创建法:当数组规模较大,元素比较冗长时,就不宜采用指令窗直接输入法,此时借助数组编辑器比较方便。
③中规模数组的M文件创建法:对于今后经常需要调用的数组,当数组规模较大面复杂时,为它专门建立一个M文件是值得的。
④利用MATLAB函数创建数组:在实际应用中,用户往往需要产生一些特殊形式的数组/矩阵。MATLAB提供了许多生成特殊数组的函数。
寻访的方法有两种:
单下标寻访:A=zeros(2,6)  %创建(2×6)的全零数组
        A(:)=1:12    %赋值号左边:单下标寻访(2×6) 数组A的全部12个元素
                    %赋值号右边:拥有12个元素的一维数组

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