Matlab 教材:邏輯算子的拓展應用範例

拓展的邏輯算子有什麼用呢?只要發揮創意,就會發現妙用。 這裡我們舉一個例子。這是做老師的人經常 (也許每學期一次) 需要的程序。 假設以下序列是一個班級的學期成績:

v = [59 92 40 12 85 54 57 49 80 61 82 57]
現在老師想要調整分數,把 >= 55 且 <= 59 的成績,都加分到 60 分。 以下敘述一種做這個「調整分數」的 Matlab 流程。

首先,我們把成績介於 55 和 59 之間 (含兩端點) 的「位置」取出來:

pos = ((55 <= v) & (v <= 59))
得到的 pos 序列是
[1 0 0 0 0 0 1 0 0 0 0 1]
然後我們把不需要加分的成績保持原狀,但是暫時讓那些將被加分的成績是 0:
noadj = v .* (~pos)
得到的 noadj 序列是
[0 92 40 12 85 54 0 49 80 61 82 0]
現在,只要把那些被加分的成績變成 60 就好了:
new = noadj + 60*pos
得到的 new 序列是
[60 92 40 12 85 54 60 49 80 61 82 60]
這就是學期成績啦。

習題

  1. 令 v 是任意維度的序列,元素是任意的正整數。 寫一些 Matlab 指令,把 v 裡面超過 255 的元素全部置換成 255,其他的元素不變。
  2. 令 n 是任意正整數,x 是任意介於 0 與 1 之間的數, v = rand(1,n); 寫一些 Matlab 指令, 使得 v 裡面不到 x 的元素全部被置換成 x,其他元素不變。
  3. 令 v 是任意維度的序列, 寫一些 Matlab 指令,計算 v 裡面所有介於 60 和 100 之間的元素和 (含兩端點)。
單維彰 (2003/04/15) --- (單) [Prev] [Next] [Up]