实验二 一维二维数组的创建和寻访
一、实验目的
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维数相同的“0,1”逻辑数组
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、补充输入以下指令,写出运行结果并说明reshape,diag,repmat,flipud,fliplr,rot90的作用。本例演示:数组操作函数的用法;空阵[ ]删除子数组的用法。
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) %将1到9重排成(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) %当A、B数组中,两个对应元素中仅一个为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中的数组运算和矩阵运算是两种不同的运算,其运算符号和运算规则都有所不同。
2、MATLAB总把数组看作存储和运算的基本单元,标量数据能作为数组处理吗?
答;标量数据可以看成是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小时内删除。
发表评论