【 * 例 3.10-1 】数组的扩展。
(1)、数组的赋值扩展法
A=reshape(1:9,3,3) % 创建 数组 A
A =
1 4 7
2 5 8
3 6 9
A(5,5)=111 % 扩展为 数组。扩展部分除 (5,5) 元素为 111 外,其余均为 0 。
A =
1 4 7 0 0
2 5 8 0 0
3 6 9 0 0
0 0 0 0 0
0 0 0 0 111
A(:,6)=222 % 标量对子数组赋值,并扩展为 数组。
A =
1 4 7 0 0 222
2 5 8 0 0 222
3 6 9 0 0 222
0 0 0 0 0 222
0 0 0 0 111 222
(2)、多次寻访扩展法
AA=A(:,[1:6,1:6]) % 相当于指令 repmat(A,1,2) ,读者可以试试。
AA =
1 4 7 0 0 222 1 4 7 0 0 222
2 5 8 0 0 222 2 5 8 0 0 222
3 6 9 0 0 222 3 6 9 0 0 222
0 0 0 0 0 222 0 0 0 0 0 222
0 0 0 0 111 222 0 0 0 0 111 222
(3)、合成扩展法
B=ones(2,6) % 创建 全 1 数组
B =
1 1 1 1 1 1
1 1 1 1 1 1
AB_r=[A;B] % 行数扩展合成
AB_r =
1 4 7 0 0 222
2 5 8 0 0 222
3 6 9 0 0 222
0 0 0 0 0 222
0 0 0 0 111 222
1 1 1 1 1 1
1 1 1 1 1 1
AB_c=[A,B(:,1:5)'] % 列数扩展合成
AB_c =
1 4 7 0 0 222 1 1
2 5 8 0 0 222 1 1
3 6 9 0 0 222 1 1
0 0 0 0 0 222 1 1
0 0 0 0 111 222 1 1
【 * 例 3.10-2 】提取子数组,合成新数组。
A % 重显 A 数组
A =
1 4 7 0 0 222
2 5 8 0 0 222
3 6 9 0 0 222
0 0 0 0 0 222
0 0 0 0 111 222
AB_BA=triu(A,1)+tril(A,-1) % 利用操作函数,使主对角元素为全 0
AB_BA =
0 4 7 0 0 222
2 0 8 0 0 222
3 6 0 0 0 222
0 0 0 0 0 222
0 0 0 0 0 222
AB1=[A(1:2,end:-1:1);B(1,:)] % 灵活合成
AB1 =
222 0 0 7 4 1
222 0 0 8 5 2
1 1 1 1 1 1
【 * 例 3.10-3 】单下标寻访和 reshape 指令演示。
clear % 清除内存变量
A=reshape(1:16,2,8) % 变一维数组成 数组
A =
1 3 5 7 9 11 13 15
2 4 6 8 10 12 14 16
reshape(A,4,4) % 变
数组为 数组
ans =
1 5 9 13
2 6 10 14
3 7 11 15
4 8 12 16
s=[1 3 6 8 9 11 14 16]; % 定义“单下标”数组
A(s)=0 % 利用“单下标”数组对 A 的元素重新赋值
A =
0 0 5 7 0 0 13 15
2 4 0 0 10 12 0 0
【 * 例 3.10-4 】“对列(或行)同加一个数”三种的操作方法。
clear,A=reshape(1:9,3,3)
1 4 7
2 5 8
3 6 9
b=[1 2 3];A_b1=A-b([1 1 1],:) % 使 A 的第 1,2,3 行分别减 b 向量 [1 2 3]
A_b1 =
0 2 4
1 3 5
2 4 6
A_b2=A-repmat(b,3,1)
A_b2 =
0 2 4
1 3 5
2 4 6
A_b3=[A(:,1)-b(1),A(:,2)-b(2),A(:,3)-b(3)]
A_b3 =
0 2 4
1 3 5
2 4 6
【 * 例 3.10-5 】逻辑函数的运用示例。
randn('state',1),R=randn(3,6) % 创建正态随机阵
R =
0.8644 0.8735 -1.1027 0.1684 -0.5523 -0.6149
0.0942 -0.4380 0.3962 -1.9654 -0.8197 -0.2546
-0.8519 -0.4297 -0.9649 -0.7443 1.1091 -0.2698
L=abs(R)<0.5|abs(R)>1.5 % 不等式条件运算,结果给出逻辑数组
L =
0 0 0 1 0 0
1 1 1 1 0 1
0 1 0 0 0 1
R(L)=0 % “逻辑 1 ” 对应的元素赋 0 值。
R =
0.8644 0.8735 -1.1027 0 -0.5523 -0.6149
0 0 0 0 -0.8197 0
-0.8519 0 -0.9649 -0.7443 1.1091 0
s=(find(R==0))' % 利用 find 获得符合关系等式条件的元素“单下标”
s =
2 5 6 8 10 11 17 18
R(s)=111 % 利用“单下标”定位赋值
R =
0.8644 0.8735 -1.1027 111.0000 -0.5523 -0.6149
111.0000 111.0000 111.0000 111.0000 -0.8197 111.0000
-0.8519 111.0000 -0.9649 -0.7443 1.1091 111.0000
[ii,jj]=find(R<0); % 利用 find 获得符合关系等式条件的元素“双下标”
disp(ii'),disp(jj')
3 1 3 3 1 2 1
1 3 3 4 5 5 6
本篇教程来源于 完全教程网 原文链接:http://www.pcstu.com/industrialdesign/matlab/20070214/32196_2.html