数组构作技法综合

【 * 例 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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值