matlab 数组创建及寻访

1 一维数组的创建

a)递增/递减型一维数组的创建(函数的自变量/for循环中循环自变量)

i 冒号生成法 x=a:inc:b ps:inc可省略,默认为1.

ii 线性(对数)定点法 x=linspace(a,b,n) 或 x=logspace(a,b,n) ps:n为总采样点数,一维数组的长度

b)其他类型一维数组的创建

i 逐个元素输入 x=[2.2,1.2,4, pi/2,-1] ps:创建方式中括号[],区别于方法圆括号()

ii matlab函数生成法 rand(1,n),ones(1,n)等

2 二维数组的创建

i 小规模数组的直接输入(指令窗输入)

a) 整个输入数组收尾必须加方括号“[]”;

b)数组的行与行之间必须用分号“ ; ”或回车键[Enter]隔离;“ ; ”在方括号“[]”内时,它是数组行间的分隔符。“ ; ”在指令后的结束符时,将不在屏幕上显示该指令执行后的结果。

c)数组元素必须由逗号“,”或空格号分隔。

ii 中规模数组的数组编辑器创建 主页||变量||创建变量,输入数据。ps:如该变量后续还需要调用,可以将其保存为.mat文件。

iii 中规模数组的M文件创建 在文件编辑调试器中,空白填写框中输入所需数组,保存文件(.m格式)。

iv Matlab函数创建数组

a)非随机标准数组指令

diag:对角数组;eye:单位数组;magic:魔方数组;ones:全1数组;rand:均匀分布随机数组;randi:均匀分布的整数数组;randn:正态分布随机数组;randperm:1~n随机排列整数;randsrc:指定字符集上生成均匀分布的随机数组;zeros:全零数组

am=magic(3)

am=8 1 6

3 5 7

4 9 2

ad=diag(am)

ad=8

5

2

add=diag(diag(am)) %am矩阵对角元阵

add= 8 0 0

0 5 0

0 0 2

b) 随机数组生成

au=rand(1,5) %元素在[0,1]中均匀分布的(1*5)随机数组

au=0.5468 0.5211 0.2316 0.4889 0.6241

ai=randi([-3,4],2,8) %元素在[-3,4]中整数的均匀分布(2*8)随机数组

ai=2 -1 -3 4 -3 -1 -2 -3

0 4 4 3 -1 2 2 2

as=randsrc(3,12,[-3,-1,1,3],1) %在[-3,-1,1,3]字符集上产生(3*12)均匀分布数组;随机发生器的状态量设置为1

as= -1 -1 -3 1 -3 1 -3 3 3 -3 -3 1

1 -3 -1 -1 3 -1 -3 -1 3 -3 -1 1

-3 -3 -1 1 -3 1 3 1 -3 3 3 -1

ap=randperm(8) %8个正整数随机排列

ap=6 4 7 3 2 8 5 1

2 二维数组元素的标识和寻访

a)数组的维数(Dimension)和ndims指令 给出数组的维数 ndims(A)

b)数组的大小(size)和size指令 不管A数组的维数是多少,size(A)可给出A各维的大小,而指令length(A)可给出所有维中的最大长度。即length(A)等价于max(size(A))。

全下标法 A(r,c),A(r,:),A(:,c)

单下标法A(:) “单下标全元素”寻访由A的各列按自左到右的次序首尾相接而生成“一维长列”数组

A(s)“单下标”寻访,生成“s指定的”一维数组。s若是“行列组”(或“列数组”),则A(s)就是长度相同的“行数组”(或“列数组”)

逻辑标识法 A(L) “逻辑1”寻访,生成“一维”列数组:由与A同样大小的“逻辑数据”L中“1“元素选出A的对应元素;按”单下标“次序排成长列组成

a=zeros(2,6)

a(:)=1:12

a=1 3 5 7 9 11

2 4 6 8 10 12

a8=a(8)

a8=8

a311=a([3,11])

a311=3 11

逻辑1寻访:赋值和获取

L=A<3 %赋值号右边:关系比较产生逻辑结果。产生于A维数大小相同的“0,1”逻辑数组;1表示为“真”,在此L数组中取1的位置对应的A数组元素小于3

A(L)=NaN %逻辑1法寻访:把逻辑1标识位置的元素赋为“非数”。

L=1 0 0 0 0 0 1

1 0 0 0 0 0 1

1 1 1 1 1 1 0

A= NaN 3 5 7 9 11 NaN

NaN 4 6 8 10 12 NaN

NaN NaN NaN NaN NaN NaN 37