• 沒有找到結果。

第四章 陣列的基本操作與運算 習題參考答案 4.1 陣列元素的處理

N/A
N/A
Protected

Academic year: 2022

Share "第四章 陣列的基本操作與運算 習題參考答案 4.1 陣列元素的處理"

Copied!
18
0
0

加載中.... (立即查看全文)

全文

(1)

第四章 陣列的基本操作與運算 習題參考答案

4.1 陣列元素的處理

1. 設向量 v1=[6 8 1 9 7 2 7 8],試依下列題意作答:

(a) 取出向量 v1 的第 5 個元素。

(b) 取出向量 v1 的第 4~7 個元素。

(c) 查詢向量 v1 的長度(即元素的個數)

(d) 取出向量 v1 的第 3 個到最後一個元素。

(e) 將向量 v1 的元素反向排列,並將其結果設給另一向量 v2。

(f) 刪除向量 v2 的第 5~7 個元素。

(g) 將向量 v1 的第 5 個到最後一個元素的值設為 10。

Ans:

>> v1=[6 8 1 9 7 2 7 8]

v1 =

6 8 1 9 7 2 7 8 (a) >> v1(5)

ans = 7 (b) >> v1(4:7)

ans =

9 7 2 7 (c) >> length(v1)

ans = 8

(d) >> v1(3:end) ans =

1 9 7 2 7 8

(2)

(e) >> v2=v1(end:-1:1) v2 =

8 7 2 7 9 1 8 6 (f) >> v2(5:7)=[]

v2 =

8 7 2 7 6 (g) >> v1(5:end)=10

v1 =

6 8 1 9 10 10 10 10

2. 設矩陣 M=[1 2 3; 4 5 6; 7 8 9],試依下列題意依序作答:

(a) 取出矩陣 M 裡,第 1 列,第 3 行的元素。

(b) 取出矩陣 M 裡,第 2 列的第 1~2 個元素。

(c) 取出矩陣 M 第 1 列的所有元素。

(d) 取出矩陣 M 裡,最後一列的第 1 個與第 3 個元素。

(e) 在矩陣 M 的最右邊加上一個所有元素皆為 0 的行向量。

(f) 刪除矩陣 M 的最後一行。

(g) 取出矩陣 M 裡,第 1 列到第 2 列裡的第 1 到第 2 行的元素。

Ans:

>> M=[1 2 3; 4 5 6; 7 8 9]

M =

1 2 3 4 5 6 7 8 9 (a) >> M(1,3)

ans = 3

(3)

(b) >> M(2,[1 2]) ans =

4 5 (c) >> M(1,:)

ans =

1 2 3 (d) >> M(end,[1 3])

ans = 7 9 (e) >> M=[M,[0;0;0]]

M =

1 2 3 0 4 5 6 0 7 8 9 0 (f) >> M(:,end)=[]

M =

1 2 3 4 5 6 7 8 9 (g) >> M(1:2,1:2)

ans = 1 2 4 5

3. 設矩陣 M 的大小為 4 6 ,試利用 sub2ind() 指令以一維索引值來表示下列的陣列元素:

(a) M(1,2) (b) M(2,4) (c) M(3,5)

Ans:

(a) >> ind=sub2ind([4,6],1,2) ind =

5

(4)

(b) >> ind=sub2ind([4,6],2,4) ind =

14

(c) >> ind=sub2ind([4,6],3,5) ind =

19

4. 設矩陣 M 的大小為 5 7 ,試利用 ind2sub() 指令以二維索引值來表示下列的陣列元素:

(a) M(8) (b) M(10) (c) M(12)

Ans:

(a) >> [row,col]=ind2sub([5,7],8) row =

3 col = 2

(b) >> [row,col]=ind2sub([5,7],10) row =

5 col = 2

(c) >> [row,col]=ind2sub([5,7],12) row =

2 col = 3

5. 設矩陣 M=[1 3 4 7; 6 5 9 8]

(a) 試以一維索引值取出 M 的第 4,7,8 個元素。

(b) 試以二維索引值取出 M 的第 1~2 列,2~3 行的元素。

(c) 試將 M 的最後一行元素刪除。

(5)

Ans:

>> M=[1 3 4 7; 6 5 9 8]

M =

1 3 4 7 6 5 9 8 (a) >> M([4 7 8])

ans =

5 7 8 (b) >> M(1:2,2:3)

ans = 3 4 5 9 (c) >> M(:,end)=[]

M =

1 3 4 6 5 9

6. 設矩陣

1 2 3 4 5 6 7 8 9 10 11 12 M

 

 

  

 

 

(a) 試將矩陣 M 的每一列的元素反向排列,使其成為

9 10 11 12 5 6 7 8 1 2 3 4

 

 

 

 

 

(b) 試將矩陣 M 的每一行的元素反向排列,使其成為

4 3 2 1 8 7 6 5 12 11 10 9

 

 

 

 

 

Ans:

>> M=[1 2 3 4; 5 6 7 8;9 10 11 12]

M =

1 2 3 4 5 6 7 8 9 10 11 12

(6)

(a) >> M(3:-1:1,:) ans =

9 10 11 12 5 6 7 8 1 2 3 4 (b) >> M(:,4:-1:1)

ans =

4 3 2 1 8 7 6 5 12 11 10 9

4.2 多維陣列

7. 設矩陣 M=[1 2 ; 4 5],試將矩陣 M 再加上一頁,使其變成 2 2 2  的三維陣列(新加入

的一頁,其元素值請設為0)。

Ans:

>> M=[1 2;4 5]

M =

1 2 4 5

>> M(:,:,2)=0 M(:,:,1) = 1 2 4 5 M(:,:,2) = 0 0 0 0

8. 試建立一個 2 2 3 2   的四維陣列 M,陣列裡所有的元素值皆為 1,並請利用 whos 指

令查詢陣列M 的維度,以及它所佔的位元組。

Ans:

>> M=ones(2,2,3,2) M(:,:,1,1) = 1 1 1 1

(7)

M(:,:,2,1) = 1 1 1 1 M(:,:,3,1) = 1 1 1 1 M(:,:,1,2) = 1 1 1 1 M(:,:,2,2) = 1 1 1 1 M(:,:,3,2) = 1 1 1 1

>> whos M

Name Size Bytes Class Attributes M 4-D 192 double

9. 設陣列 M 的大小為 3 4 2  :

(a) 陣列 M 的第 1 列,第 3 行,第 2 頁之一維索引值為何?

(b) 如果陣列 M 的一維索引值為 17,則其三維的索引值為何?

Ans:

>> M(:,:,1)=[1 2 3 4;5 6 7 8;9 10 11 12]

M =

1 2 3 4 5 6 7 8 9 10 11 12

>> M(:,:,2)=[13 14 15 16;17 18 19 20;21 22 23 24]

M(:,:,1) =

1 2 3 4 5 6 7 8 9 10 11 12 M(:,:,2) =

13 14 15 16 17 18 19 20 21 22 23 24

(8)

(a) >> M(1,3,2) ans = 15

>> M(19) ans = 15 (b) >> M(17)

ans = 18

>> M(2,2,2) ans = 18

4.3 常用的陣列建立指令

10. 試依序完成下列各題的要求:

(a) 試以 magic() 指令建立一個 5 5 的方陣,並將它設定給矩陣 A。

(b) 試以 eye() 指令建立一個 5 5 的單位矩陣,並將它設定給矩陣 B。

(c) 試將矩陣 B 轉成 logical 型態,並利用它取出矩陣 A 的對角線元素。

(d) 試以 Matlab 的語法驗證矩陣 A 的每一直行、每一橫列與對角線的總和均為 65。

Ans:

(a) >> A=magic(5) A =

17 24 1 8 15 23 5 7 14 16 4 6 13 20 22 10 12 19 21 3 11 18 25 2 9 (b) >> B=eye(5)

B =

1 0 0 0 0

(9)

0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 (c) >> B=logical(B)

B =

1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1

>> A(B) ans = 17 5 13 21 9

(d) >> sum(A(B)) ans =

65

>> sum(A(1,:)) ans =

65

>> sum(A(2,:)) ans =

65

>> sum(A(3,:)) ans =

65

>> sum(A(4,:)) ans =

65

>> sum(A(5,:)) ans =

65

>> sum(A(:,1)) ans =

65

>> sum(A(:,2))

(10)

ans = 65

>> sum(A(:,3)) ans =

65

>> sum(A(:,4)) ans =

65

>> sum(A(:,5)) ans =

65

11. 試建立一個以向量 [1 2 3 4] 為對角線元素,其它元素為 0 的 4 4 矩陣。

Ans:

>> diag([1 2 3 4]) ans =

1 0 0 0 0 2 0 0 0 0 3 0 0 0 0 4

12. 試建立一個維度為 4 3 2  ,平均值為 0,標準差為 1 的常態分佈亂數。

Ans:

>> randn(4,3,2) ans(:,:,1) =

0.4889 0.2939 -1.0689 1.0347 -0.7873 -0.8095 0.7269 0.8884 -2.9443 -0.3034 -1.1471 1.4384

ans(:,:,2) =

0.3252 -0.1022 -0.8649

(11)

-0.7549 -0.2414 -0.0301 1.3703 0.3192 -0.1649 -1.7115 0.3129 0.6277

4.4 陣列元素的其它操作

13. 設 A 為 5 5 的魔術方陣,B 為 5 5 的單位矩陣,試依序回答下列各題:

(a) 試分別以陣列 A 與 B 為第 1 頁和第 2 頁,將 A 與 B 合併成一個 5 5 2  的陣列,

並把其結果設定給變數C。

(b) 計算矩陣 A B ,並把其結果與陣列 C 合併,使得 A B 是合併之後之矩陣的第 1 頁。合併後之矩陣的維度為多少?試利用 size() 指令驗證之。

Ans:

>> A=magic(5) A =

17 24 1 8 15 23 5 7 14 16 4 6 13 20 22 10 12 19 21 3 11 18 25 2 9

>> B=eye(5) B =

1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 (a) >> C=cat(3,A,B)

C(:,:,1) =

17 24 1 8 15 23 5 7 14 16 4 6 13 20 22 10 12 19 21 3 11 18 25 2 9 C(:,:,2) =

1 0 0 0 0

(12)

0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 (b) >> cat(3,(A+B),C)

ans(:,:,1) =

18 24 1 8 15 23 6 7 14 16 4 6 14 20 22 10 12 19 22 3 11 18 25 2 10 ans(:,:,2) =

17 24 1 8 15 23 5 7 14 16 4 6 13 20 22 10 12 19 21 3 11 18 25 2 9 ans(:,:,3) =

1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1

>> size(cat(3,(A+B),C)) ans =

5 5 3

14. 設陣列 A=[1 2 3; 4 5 6],試回答下列問題:

(a) 試將陣列 A 順時針旋轉 90 度。

(b) 試將陣列 A 的元素上下翻轉。

(c) 試利用 reshape() 指令將陣列 A 的維度更改 3 2 的陣列。

(d) 將一維陣列 [7 8 9] 加到陣列 A 的第 3 列,使其成為 3 3 的陣列。

(e) 將一維陣列 [0; 0] 加到陣列 A 的第 4 行,使其成為 2 4 的陣列。

(13)

Ans:

(a) >> rot90(A,3) ans =

4 1 5 2 6 3 (b) >> flipud(A)

ans =

4 5 6 1 2 3 (c) >> reshape(A,3,2)

ans = 1 5 4 3 2 6 (d) >> [A;[7 8 9]]

A =

1 2 3 4 5 6 7 8 9 (e) >> [A,[0;0]]

ans =

1 2 3 0 4 5 6 0

15. 設陣列 A=[5; 4; 3],試利用 A 建立一個 3 12 的矩陣,其中矩陣A 第 1 列的元素值皆為 5,第 2 列的元素值皆為 4,第三列的元素值皆為 3。

Ans:

>> A=[5; 4; 3]

A = 5 4 3

(14)

>> repmat(A,1,12) ans =

5 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 3 3 3 3 3 3 3 3 3 3 3 3

4.5 矩陣的數學運算

16. 設陣列 A=[1 2; 4 5],B=[2 5; 0 1],試回答下列問題:

(a) 試計算 A 的 3 次方。

(b) 試計算 A 的反矩陣。

(c) 試驗證A A1A1  ,其中 I 為 2 2A I  的單位矩陣。

(d) 試計算 *A B (即矩陣相乘)。

(e) 試計算 .*A B ,即把矩陣A 裡的每一個元素乘上矩陣 B 裡相同位置的元素。

Ans:

>> A=[1 2; 4 5]

A =

1 2 4 5

>> B=[2 5; 0 1]

B =

2 5 0 1 (a) >> A^3

ans = 57 78 156 213 (b) >> inv(A)

ans =

-1.6667 0.6667 1.3333 -0.3333 (c) >> A*A^-1

(15)

ans = 1 0 0 1

>> A^-1*A ans = 1 0 0 1 (d) >> A*B

ans = 2 7 8 25 (e) >> A.*B

ans = 2 10 0 5

17. 設矩陣 A=[2, 2; 3, 5],向量 B=[1, 2],試回答下列問題:

(a) 試計算向量 B 乘上矩陣 A。

(b) 試計算矩陣 A 乘上向量 B 的轉置。

Ans:

>> A=[2, 2; 3, 5]

A =

2 2 3 5

>> B=[1, 2]

B =

1 2 (a) >> B*A

ans = 8 12 (b) >> A*B'

ans = 6

(16)

13

18. 試求解下列的方程式:

(a) 1 (b)

2

1 2 4

1 6 0

x x

  

  

 

  

   



1 2

( , ) 3 2 (7, 12) x x 1 7

 

 

(c)

1 2 3

3 2 4 6

5 7 3 2

1 6 0 1

x x x

 

  

 

  

  

   

   





(d) 1 2 3

0 2 2

( , , ) 7 4 3 (17, 12, 16)

8 4 5

x x x

 

  

 

   

 

Ans:

(a) >> A=[-1 2;1 6]

A =

-1 2 1 6

>> B=[4;0]

B = 4 0

>> inv(A)*B ans = -3.0000 0.5000 (b) >> A=[3 2;1 7]

A =

3 2 1 7

>> B=[7 12]

B =

7 12

>> B*inv(A) ans =

1.9474 1.1579 (c) >> A=[3 2 4;5 7 3;1 6 0]

A =

3 2 4

(17)

5 7 3 1 6 0

>> B=[-6;2;1]

B = -6 2 1

>> inv(A)*B ans = 3.0455 -0.3409 -3.6136

(d) >> A=[0 2 -2;7 4 3;8 -4 -5]

A =

0 2 -2 7 4 3 8 -4 -5

>> B=[17 12 16]

B =

17 12 16

>> B*inv(A) ans =

-1.6303 3.1681 -0.6471

(18)

參考文獻

相關文件

概念, 1858 年發表了關於這個課題的第一篇重要文章 hh矩陣論的研究報告ii , 系統地闡述了 關於矩陣的理論。 他在文中定義了矩陣的相等、 矩陣的運算法則、 矩陣的轉置、 零矩陣、 單位矩

„ FPGA –現場可規劃邏輯陣列 (field- programmable

„ FPGA –現場可規劃邏輯陣列 (field- programmable

„ FPGA –現場可規劃邏輯陣列 (field- programmable

„ FPGA –現場可規劃邏輯陣列 (field- programmable

„ FPGA –現場可規劃邏輯陣列 (field- programmable

„ FPGA –現場可規劃邏輯陣列 (field- programmable

至於 type 3 的 elementary column operation 就是把矩陣的 i-th column 乘上 r 後加到其 j-th column.. 由於 column operations 並未用在解聯立方乘組的問題,