Task06 多维数组
语法知识
1.多维数组的创建
1.1直接赋值
1.2通过矩阵函数生成
注:
矩阵的复制:repmat(A,[ ]),A为要复制的矩阵;
矩阵的连接:D=cat(dim,A,B,C);dim为维数;
2.多维数组的运算
实例演练
多维数组的创建:
>> A(:,:,1)=magic(3) %魔方矩阵
A =
8 1 6
3 5 7
4 9 2
>> A(:,:,2)=vander([1 2 3]) %范德蒙矩阵
A(:,:,1) =
8 1 6
3 5 7
4 9 2
A(:,:,2) =
1 1 1
4 2 1
9 3 1
>> A(:,:,3)=pascal(3)
A(:,:,1) =
8 1 6
3 5 7
4 9 2
A(:,:,2) =
1 1 1
4 2 1
9 3 1
A(:,:,3) =
1 1 1
1 2 3
1 3 6
>> B=rand(4,4,3)
B(:,:,1) =
0.8147 0.6324 0.9575 0.9572
0.9058 0.0975 0.9649 0.4854
0.1270 0.2785 0.1576 0.8003
0.9134 0.5469 0.9706 0.1419
B(:,:,2) =
0.4218 0.6557 0.6787 0.6555
0.9157 0.0357 0.7577 0.1712
0.7922 0.8491 0.7431 0.7060
0.9595 0.9340 0.3922 0.0318
B(:,:,3) =
0.2769 0.6948 0.4387 0.1869
0.0462 0.3171 0.3816 0.4898
0.0971 0.9502 0.7655 0.4456
0.8235 0.0344 0.7952 0.6463
矩阵的复制:
>> A=[1 2;3 4]
A =
1 2
3 4
>> C=repmat(A,[3 4 3]) %将矩阵A复制成3*4,然后再复制3页
C(:,:,1) =
1 2 1 2 1 2 1 2
3 4 3 4 3 4 3 4
1 2 1 2 1 2 1 2
3 4 3 4 3 4 3 4
1 2 1 2 1 2 1 2
3 4 3 4 3 4 3 4
C(:,:,2) =
1 2 1 2 1 2 1 2
3 4 3 4 3 4 3 4
1 2 1 2 1 2 1 2
3 4 3 4 3 4 3 4
1 2 1 2 1 2 1 2
3 4 3 4 3 4 3 4
C(:,:,3) =
1 2 1 2 1 2 1 2
3 4 3 4 3 4 3 4
1 2 1 2 1 2 1 2
3 4 3 4 3 4 3 4
1 2 1 2 1 2 1 2
3 4 3 4 3 4 3 4
矩阵的连接:
>> A=magic(3)
A =
8 1 6
3 5 7
4 9 2
>> B=ones(3)
B =
1 1 1
1 1 1
1 1 1
>> C=eye(3)
C =
1 0 0
0 1 0
0 0 1
>> D=cat(3,A,B,C)
D(:,:,1) =
8 1 6
3 5 7
4 9 2
D(:,:,2) =
1 1 1
1 1 1
1 1 1
D(:,:,3) =
1 0 0
0 1 0
0 0 1
多维数组的运算:
>> B(:,:,1)=magic(3);
>> B(:,:,2)=ones(3);
>> B(:,:,3)=eye(3);
>> size(B)
ans =
3 3 3
>> sum(B) %数组求和
ans(:,:,1) =
15 15 15
ans(:,:,2) =
3 3 3
ans(:,:,3) =
1 1 1
>> prod(B) %数组求乘积
ans(:,:,1) =
96 45 84
ans(:,:,2) =
1 1 1
ans(:,:,3) =
0 0 0
猜数游戏:7张数据表(默想数字在1~127之间,如果想扩大猜数范围,要增加表数)。若某个表中有默想的数据,则输入向量中相应的因素为1,否则为0。
编辑器
%This program for guess a number,which is less then inter of 127
clear
i1=1:2:127;
A(:,:,1)=reshape(i1,8,8);%设计第1张表,表中数字转换成二进制数的个位均为1,reshape为矩阵重排列函数
i2=1:2:63;
A2=[2*i2;2*i2+1];
A(:,:,2)=reshape(A2,8,8); %设计第2张表,二进制数的第二位均为1
i4=1:2:31;
A3=[4*i4;4*i4+1;4*i4+2;4*i4+3];
A(:,:,3)=reshape(A3,8,8);
i8=1:2:15;
A(:,:,4)=[8*i8;8*i8+1;8*i8+2;8*i8+3;8*i8+4;8*i8+5;8*i8+6;8*i8+7];
A5=[16:31,48:63,80:95,112:127]';
A(:,:,5)=reshape(A5,8,8);
A6=[32:63,96:127]';
A(:,:,6)=reshape(A6,8,8);
A7=[64:127]';
A(:,:,7)=reshape(A7,8,8); %设计地7张表,二进制的第7位均为1
A %显示1~7张表
V=input('please input a vector as [0,0,1,0,1,1,0],which matrix has your number set 1 else set 0\n');
S=sum(V(1)+2*V(2)+4*V(3)+8*V(4)+16*V(5)+32*V(6)+64*V(7));
fprintf('your number is %d\n',S) %输出猜想数
命令窗口
>> guessnum
A(:,:,1) =
1 17 33 49 65 81 97 113
3 19 35 51 67 83 99 115
5 21 37 53 69 85 101 117
7 23 39 55 71 87 103 119
9 25 41 57 73 89 105 121
11 27 43 59 75 91 107 123
13 29 45 61 77 93 109 125
15 31 47 63 79 95 111 127
A(:,:,2) =
2 18 34 50 66 82 98 114
3 19 35 51 67 83 99 115
6 22 38 54 70 86 102 118
7 23 39 55 71 87 103 119
10 26 42 58 74 90 106 122
11 27 43 59 75 91 107 123
14 30 46 62 78 94 110 126
15 31 47 63 79 95 111 127
A(:,:,3) =
4 20 36 52 68 84 100 116
5 21 37 53 69 85 101 117
6 22 38 54 70 86 102 118
7 23 39 55 71 87 103 119
12 28 44 60 76 92 108 124
13 29 45 61 77 93 109 125
14 30 46 62 78 94 110 126
15 31 47 63 79 95 111 127
A(:,:,4) =
8 24 40 56 72 88 104 120
9 25 41 57 73 89 105 121
10 26 42 58 74 90 106 122
11 27 43 59 75 91 107 123
12 28 44 60 76 92 108 124
13 29 45 61 77 93 109 125
14 30 46 62 78 94 110 126
15 31 47 63 79 95 111 127
A(:,:,5) =
16 24 48 56 80 88 112 120
17 25 49 57 81 89 113 121
18 26 50 58 82 90 114 122
19 27 51 59 83 91 115 123
20 28 52 60 84 92 116 124
21 29 53 61 85 93 117 125
22 30 54 62 86 94 118 126
23 31 55 63 87 95 119 127
A(:,:,6) =
32 40 48 56 96 104 112 120
33 41 49 57 97 105 113 121
34 42 50 58 98 106 114 122
35 43 51 59 99 107 115 123
36 44 52 60 100 108 116 124
37 45 53 61 101 109 117 125
38 46 54 62 102 110 118 126
39 47 55 63 103 111 119 127
A(:,:,7) =
64 72 80 88 96 104 112 120
65 73 81 89 97 105 113 121
66 74 82 90 98 106 114 122
67 75 83 91 99 107 115 123
68 76 84 92 100 108 116 124
69 77 85 93 101 109 117 125
70 78 86 94 102 110 118 126
71 79 87 95 103 111 119 127
please input a vector as [0,0,1,0,1,1,0],which matrix has your number set 1 else set 0
[1 0 0 0 0 0 0]
your number is 1