10/05/2006

Problem#2 詹弘彥

PROBLEM #2

  1. During SARS period, people who passed the airport gate should have their temperatures measured. Suppose that B is the recorded body temperatures in Fahrenheit and B=[98 100 102 104 98.4 98.2 98.5 101 102 99.5]. Please workout a program to do: a) Converse the unit of B into Centigrade b)Decide who got the temperature? Design a matrix D to show that "1" for the one who has a fever (>38C) and "0" for the normal.

題旨:找出哪些人超過38度西,超過只為1,其他為0

分析:Step1. 先要知道華氏和攝氏的單位換算

          Step2. 利用MATLAB的比較關係即可得到10

程式內容:

B=[98 100 102 104 98.4 98.2 98.5 101 102 99.5];

C=(B-32)/9*5;

D=(C>38)

執行結果:

D =   0     0     1     1     0     0     0     1     1     0

討論:

矩陣需要等維才能作相加減,但是在攝氏與華氏轉換公式中亦可使用C=(B-32.)/9*5,單一元素與等值的的的。

===============================================================

  1. There are two matrices A and B, in which A=[ -10 8 6 4 -5 20] and B=[2 8 5 10 -6 3]. Find D using both Matlab commands .(a) D= (A>B) (b) D= (A>5) (c) D=A+B.

題旨:給兩個AB陣列,試去比較與相加。

分析:Step1. 陣列比較時先判別是否等維數

          Step2. 依題意進行AB的比較與相加,比較是將以10表示,相加減時為相對元素直接相加減。

程式內容與結果:

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

D=A+B

D =  -8    16    11    14   -11    23

討論:

剛開始需判斷是否為相同維數,而在比較時由於為『大於』,所以『等於』與『小於』其獲得直接為0只有大於是才為1。當陣列相加時,由於是相同維數的陣列,故MATLAB將相對的元素進行相加即為所求。

===============================================================

  1. Suppose that x=[10 20 30] and y=[1 4 6], Calculate the following combinations using Matlab commands:(a) A= 3x +y (b) B=5y/x (c) C=4x2y (d) D=sin(x)cos(y) (e)5x sin(2y)

題旨:給兩個xy陣列,進行陣列的加減乘除的基本運算。

分析:Step1. 陣列維數相同時即可直接進行相加減

          Step2. 遇到陣列相乘除時,由於是陣列的關係所以需加註『.』來表示陣列,遇到三角函數表示時,需將整個函數視為一陣列來進行計算。

程式內容與結果:

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

討論:

此題主要是練習陣列的乘除計算,特別需注意的是兩陣列相乘除時,需要加標註『.』來表示陣列,所以MATLAB就以『.*』與『./』為陣列的乘除符號,即可得到所求。

===============================================================

  1. A set of resistors are expressed in an array as R=[ 10 30 200 400]ohms. Write a M-file program to calculate the equivalent resistance if (a) all the resistors are in series (b) all of the resistors are in parallel.

題旨:建立一M檔案,將題目所給的R電阻陣列進行串連與並連的計算。

分析:Step1. 先開啟先的檔案,儲存後即為M檔案

Step2. 利用sum的指令即可進行元素的相加

Step3. 注意串連與並連的表示方式

程式內容:

M-FILE

function ex4(R)

S=sum(R)

P=1/sum(1./R)

 

結果:

ex4([10 30 200 400])

S = 640

P = 7.1006

討論:

本題主要是練習sum指令的運用,值得注意的地方就是R為一陣列,所以在進行相除時需以『./』的方式進行運算,其結果即為所求。

===============================================================

  1. Suppose matrix A=1:24, please reform A into matrices B in size 3x8; C in size 6x4; D in size 2x12.

題旨:A為一從124的陣列形式排列(1x24),試將A陣列變換成其他維數的矩陣表示之。

分析:Step1. A為一陣列,所以需先輸入A值來定義其陣列

 Step2.在變換成其他維度矩陣時,需利用指令reshape,其指令可將矩陣重新編排其行列。

程式內容與結果:

A=1:24

A =

  Columns 1 through 17

     1     2     3     4     5     6     7     8     9    10    11    12    13    14    15    16    17

  Columns 18 through 24

    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

 

討論:

此題為練習單一陣列的維數變換,既將一陣列變換成多維矩陣,其指令reshape即能變換成其他維數的矩陣,值得注意的是原A1x24的陣列,若是變換其他形式的矩陣時也需行與列的排數相乘為24,若是不以24表示,其元素將為不足,MATLAB無法表示。

沒有留言: