10/06/2006

Problem #02 林翊展

第一題:
題旨:將量測的華式溫度轉換成攝氏後,找出體溫大於38的人,以矩陣D表示.當大於38顯示為1,小於則為0.
分析:將B矩陣中所有的元素進行轉換後,與38比較大小顯示於矩陣D.再利用尋找非零元素的方法,顯示其位置而容易尋找.
程式流程與分析:

>> clear
>> B=[98 100 102 104 98.4 98.2 98.5 101 102 99.5];
>> C=(B-32).*5/9; %華式溫標轉換成攝氏溫標的轉換公式
>> D=C>38

D =

0 0 1 1 0 0 0 1 1 0

>> [E]=find(D) %尋找非零元素並顯示其位址

E =

3 4 8 9

討論:雖然題目的要求只有顯示D矩陣,但是如果當被測者數量眾多(資料量龐大),海關人員難以尋找到底是哪一位的體溫超過38度,所以後面加了一個command,使得最後顯示為超過38度的人的序號,如果是二維矩陣則為位址.


第二題:
題旨:矩陣A與B,利用MATLAB程式進行比較,將結果顯示於D.
分析:當進行矩陣的運算時,要先注意其維數是否符合進行運算的條件.如果為矩陣與常數運算,則無此顧慮,但運算元前面要加"."
程式流程與分析:

>> clear
>> A=[-10 8 6 4 -5 20];B=[2 8 5 10 -6 3];
>> D=(A>B)

D =

0 0 1 0 1 1

>> D=(A>5)

D =

0 1 1 0 0 1 %比大小時,當符合則顯示1,不符合則顯示0

>> D=A+B

D =

-8 16 11 14 -11 23

討論:此題的兩個矩陣維數相同,所以能輕易進行運算.


第三題:
題旨:兩個矩陣x與y,進行加減乘除運算
分析:跟第二題一樣,矩陣進行運算須注意其維度,因為此為兩個列矩陣,無法進行矩陣乘除,只能讓相同位址的元素進行運算,此時運算元間要加".",常數則不用,而三角則直接進行元素的運算.

程式流程與分析:

>> clear
>> x=[10 20 30];y=[1 4 6];
>> A=3*x+y

A =

31 64 96

>> B=5*y./x

B =

0.5000 1.0000 1.0000

>> C=4*x.*(2*y)

C =

80 640 1440

>> D=sin(x).*cos(y)


D =

-0.2939 -0.5967 -0.9487 %三角函數以逕度量進行運算

>> E=5*x.*sin(2*y)

E =

45.4649 98.9358 -80.4859

討論:當沒有加上"."號時,程式會告知無法計算.三角函數則以逕度量進行運算,如果要以角度進行運算,指令為sind與cosd.


第四題:
題旨:建立M-file,先在檔案中將程式打好,然後在matlab主程式中呼叫即可.
分析:建立M-file的路徑"file->new->M-file",程式打好後存檔,在matlab主程式中,直接輸入M-file的檔名即可執行.

程式流程與分析:

1.M-file:
R=[10 30 200 400];
series=sum(R) %串聯的總電阻為全部相加
parallel=1/sum(1./R) %並聯的總電阻為全部的倒數相加的倒數

(檔名:resistor)

2.matlab主程式

>> clear
>> resistor

series =

640


parallel =

7.1006

討論:M-file可以很方便的用來debug,尤其當程式很大的時候.此程式的另一個方法可以使用函數檔.如果需要常常用到相同的計算式時,可以利用M-file製成函數檔,只須呼叫並將變數帶入即可.


第五題:
題旨:一個1~24的矩陣A,將它變成3x8,6x4,2x12的矩陣.
分析:利用resharp的指令來改變其行列.
程式流程與分析:

>> clear
>> A=1:24

A =

Columns 1 through 13

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

Columns 14 through 24

14 15 16 17 18 19 20 21 22 23 24

>> B=reshape(A,3,8)

B =

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

>> C=reshape(A,6,4)

C =

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

>> D=reshape(A,2,12)

D =

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

討論:建立一個元素為連續的矩陣時,可用":",可以省去麻煩.使用resharp指令時,要注意行數與列數的相乘是否符合,否則無法resharp.

沒有留言: