10/09/2006

3.1關係操作元

兩陣列間之相互比較是常有的事,若能配合程式之關係運算則可節省撰寫時間。一般關係操作元主要在兩個變數間作邏輯性比較,,然後選擇一個最佳的結果;在MATLAB之應用上實也脫離不了這些原則。只是在陣列之比較上,必須時時注意其大小之匹配。下面為一般操作元之定義:


表3.1 關係操作元










操作單元符號說明
<小於
<=小於或等於
>大於
>=大於或等於
==等於
~=不等於



上述關係操作元當中,比較特別需要注意的是,相等之關係操作元必須使用兩個等於,以便與設定變數值之等於有所區別。

在同樣大小的矩陣中,其比較可依元素與元素相互比較,將結果置於另一矩陣內。以下面兩矩陣A、B為例,兩者分別由魔方陣及亂數函數產生,大小均為4x4:

>>A=magic(4)
A =
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1

>>B=round(rand(4)*16)
B =
7 14 13 13
15 8 0 8
7 3 11 11
7 11 6 7

>>C=A>=B
C =
1 0 0 1
0 1 1 1
1 1 0 1
0 1 1 0

新的矩陣C為兩個矩陣比較後之結果,其元素由邏輯值0或1組成,大於等於為1否則為0。

在矩陣之操作中,條件型態也可以加入,以歸納一些符合條件的元素。以上述A矩陣為例,若在A矩陣中,將所有A>=B之元素均設為100,則可利用上述C矩陣之邏輯值作為條件如下:

>>A(C)=100
A =
100 2 3 100
5 100 100 100
100 100 6 100
4 100 100 1

A矩陣中只要相對應於C矩陣中之值為真,或合於A>=B條件之元素因而均被設為100。這樣的結果僅需一個指令即可達成。實際上要達成上項目的並不一定要經過C矩陣,直接採用下列方式亦可:

>>A(A>=B)=100
>>A =
100 2 3 100
5 100 100 100
100 100 6 100
4 100 100 1

其結果與上述方法相同。這種方法並不只與其他矩陣比較,與自身矩陣之元素比較亦可,例如:

>>A(A<10)=10
A =
100 10 10 100
10  100 100 100
100 100 10 100
10 100 100 10

沒有留言:

張貼留言