星期一, 三月 26, 2007

[精通MATLAB6] 基本特色

試譯者:jiing

基本特色


執行MATLAB會在你的電腦螢幕上產生一個或多個視窗。這些視窗中其中有一個標題是MATLAB,它被稱作是MATLAB desktop。此視窗是MATLAB中最主要的圖形使用者介面。在MATLAB視窗中,有一個視窗稱作是Command windows。這裡是你和MATLAB互動的主要地方。Prompt >>在Command window中顯示,並且當Command window在運作時,在prompt的右方會有一個閃爍的指標出現。這個指標和MATLAB prompt代表MATLAB正在等待執行數學的運算。

2.1 簡易數學


就如同計算機一般,MATLAB可以作基本的數學運算。考慮以下簡單的例子:瑪莉到辦公室文具用品店以買了4個橡皮擦,每個25分;6個記事本,每個52分;2個膠帶,每個99分。請問瑪莉買了幾個東西且花了多少錢?用計算機來解這個問題,你會輸入
4+6+2=12 items
4*25+6*52+2*99=610 cents

在MATLAB裡,這個問題可以用好幾個方法來解。第一個,可以用上頭所說的使用計算機的方式來解:
>> 4+6+2
ans =
12
>> 4*25+6*52+2*99
ans =
610

注意到MATLAB並不在乎空格space的大小,且乘法的優先權高於加法。再注意到MATLAB在二次運算都稱結果為ans,是answer的簡稱。

解決上述問題的另一個方法是將資訊儲存在MATLAB variables裡:

「略」

在此我們建立了三個MATLAB變數,eraser, pads和tape來儲存每件物品的個數。在輸入每行敘述之後,除了tape的那行之外,MATLAB都顯示了結果。在行末的分號告訴MATLAB計算這一行但不要顯示其結果。最後,我們告訴MATLAB將購買的物品數叫做是items而全部所需付出的金錢為cost。在每一個步驟中,MATLAB記憶了過去的資訊。因為MATLAB記憶了這些事,讓我們求每件物品的平均花費為:
>> average_cost = cost/items
average_cost =
50.833


因為 average cost是二個字,而MATLAB中的變數必須是一個字,故使用底線來建立一個新變數average_cost。

除了加法和乘法之外,MATLAB提供了以下的基本算術運算子:






運算子 符號 例子
加法 + 3 + 22
減法 - 54.4 – 16.5
乘法 * 3.14 * 6
除法 / 19.54 /7 或7\19.54
次方 ^ 2^8

這些運算在一已知表示式中的子的計算次序為一般的優先次序法則,我們統整如下:

式子被由左到右地計算,其中次方(指數)有最高的優先次序,接著是乘法和除法,它們有相同的優先次序,再緊接著是加法和減法,它們也有相同的優先次序。而括弧可以被用來改變這些順序,且以上的法則可以被套用到一堆的括弧中,此時優先次序則由最內的括弧到最外的括弧。

2.2 MATLAB的workspace (工作區)


當你在Command window中工作時,MATLAB會記憶你所輸入的每行指令和你建立的每個變數的值。這些指令和變數是常駐於MATLAB workspace或Base workspace中,並且只要你需要隨時都可以被取用。舉例說明,為了檢查tape變數的值,你所需要做的就是在提示符號之後輸入它的名字來詢問MATLAB:
>>tape
tape =
2

如果你無法記住變數的名字,你可以輸入MATLAB指令 who來要求MATLAB列出它所知道的變數名稱:

[略]

注意到MATLAB並不會告訴你變數的值;它僅僅給予你它們的名稱。若要求變數的值,你必須在MATLAB提示符號之後輸入變數名稱。

要回復前幾步的指令,MATLAB使用鍵盤上的方向箭頭(Cursor)鍵。例如按↑鍵一次,則叫回最近一次在提示符號之後的指令。重覆按下↑鍵則可回到更前頭的指令,每多按一次則回復到更前一步的指令。相似地,按下↓則捲動到後一項指令。按下→或←鍵則在MATLAB提示符號之後的指令上移動一格,因此也允許這項指令被編輯,這樣的方式就好像你在使用文字處理軟體編輯文字一樣。其它標準的編輯按鍵諸如Delete或是Backspace, Home和End則和一般情形無異。Tab鍵對於讓變數名稱變完整非常有用。一旦一項捲動過的指令是可行的,則無論方向箭頭在command window的何處,按下Return鍵會告訴MATLAB要執行指令了。最後,或許也是最有用的Escape鍵可以消去目前在提示符號上的指令。對於你們之中熟悉EMACS編輯器的那些人,MATLAB也接受一般EMACS編輯控制字元序列,例如Control-U來消除目前的指令。

2.3 關於變數


如同其它的程式語言,MATLAB對於變數也有其規定。之前已經注意到變數名稱必須是一個不包含空格的字。更精確地說,MATLAB變數命名原則如下:
變數命名原則 註解和範例
變數名稱是case-sensitive Cost, cost, CoSt和COST是完全不一樣的MATLAB變數
變數名稱可以包含至多31個字元。任何字元只要超過第31個則會被忽略 Howaboutthisvariablename
變數名稱必須始於英文字母,緊隨著任何數目的字母、數字或底線。標點符號字元不被允許因為在MATLAB中,它們大多有特殊定義 How_about_this_variable_name
X51483
a_b_c_d_e

對於以上的命名原則有一些特例。MATLAB有一些名字是不能用來當作變數的。這些名字形成了MATLAB的keyword(關鍵字)或是reserved word list(保留字列表)。
保留字列表
For end if while function return elseif case otherwise switch continue else try catch global persistent break

如果你將保留字當作是變數的話,MATLAB會呈報錯誤。不過,你可以使用相似於保留字的字,比如將一個字母或數個字母大寫。
此外,就如同你的計算機中儲存了像 這種常數,MATLAB也有一些特殊的變數:
















特殊變數描述
ans 結果的預設變數名稱
beep 使電腦發出嗶嗶聲
pi 圓周率
eps 使得加上1會大於1的最小數目
inf 代表無窮,例如1/0
NaN (or)nan 代表 Not-a-Number,例如0/0
i (or) j 代表虛數
nargin 函式的輸入引數個數
nargout 函式的輸出引數個數
realmin 最小可用的正實數
realmax 最大可用的正實數
bitmax 最大可用的正整數
varargin 輸入引數
vararout 輸出引數


如果你重覆使用一個像在之前例子中tape的變數,或者是指定一個值到以上所說的特殊變數,則它之前的值會被覆寫且遺失。不過,任何其它的計算式則不會改變先前原有的值。考慮以下的例子:
>>erasers=4;
>>pads=6;
>>tape=2;
>>items=erasers+pads+tape
items =
12
>>erasers=6
erasers =
6
>>items
items =
12


在此,再次使用第一個範例,我們求出Mary購買的物品件數。然後,我們將橡皮擦erasers的數目改變為6,覆寫了它先前的值4。這麼做之後,items的值還是沒變。不像一般的試算表程式,MATLAB並不會根據erasers的新值重新計算items的值。每當MATLAB計算時,它使用的變數值是它在指令執行的那個時點所知的值。在上例中,如果你希望重新計算item的數目、總花費和平均花費,則需要重新叫用適當的MATLAB指令並且要求MATLAB再次計算它們。

上述的特殊變數也遵守此原則,除了特殊變數的特定值是可以被復原的。當你啟動MATLAB,特殊變數就具有預設值了;當你改變它們的值,原有的特定值會遺失。要恢復它們的預設值,你所需要做的就是clear覆寫的值。舉例來說:
>> pi
ans =
3.1416
>> pi=1.23e-4
pi =
1.2300e-004
>> clear pi
>> pi
ans =
3.1416

這說明了pi 具有特定值.1416精確到第五位小數點,它被1.23e-4這個值覆寫,然後,在使用clear來清除之後,它又回復了其原有預設值。

2.4 註解、標點符號和中斷執行


如同我們之前所見到的,在指令之後加上一個分號會抑制印出計算好的結果。這個特性在抑制中間計算的結果時特別有用。舉例來說:
>>erasers
erasers =
6
>>items = erasers+pads+tape;
>>cost = erasers*25+pads*52+tape*99;
>>average_cost=cost/items
average_cost=
47.143

顯示出當瑪莉購買了6個eraser而非原來的4個時,每個item的平均花費(average_cost)。中間運算的結果值items和cost並沒有被印出來,因為在定義它們的指令之後有加上分號。

除了分號之外,MATLAB還使用了其它的標點符號。在百分比符號(%)之後的所有文字都會被認為是註解,例如:
>> tape=2 % number of rolls of tapes purchased

變數tape的值被設為2,MATLAB忽略了百分比符號之後的文字。

數個指令可以被放置於同一行如果它們由逗號或分號分隔,例如:
>> erasers=6,pads=6;tape=2
erasers =
6
tape =
2


逗號告訴MATLAB要顯示出結果;分號則抑制MATLAB顯示結果。

有時表示式或指令可能太長,以致於必須寫到另外一行以方便表示。在MATLAB中,連續的陳述式以三個連續的英文句點來表示,例如:
>> average_cost = cost / items %command as done earlier
average_cost =
47.143

>> average_cost = cost / … %command as done earlier
items
average_cost =
47.143

>> average_cost = cost … %command as done earlier
/items
average_cost =
47.143

>> average_cost = cost /it … %command as done earlier
ems
??? average_cost =cost / items
Missing operator, comma, or semi-colon

或是出現
??? ems
|
Error: Missing operator, comma, or semicolon.

(在此,不同版本的錯誤訊息可能不同)

如上所示,如果連續的三個句號出現在變數名稱和數學運算子之間的話,陳述示是有作用的,但是三個句號不能出現在變數名稱的中間。也就是說,變數名稱不能被分成二行。此外,因為註解會被忽略,所以它們也不能是連續的,例如:
>> % Comments cannot be continued...
>> either
??? Undefined function or variable 'either'.


在這個例子當中,在註解中的 … 是註解的一部份而不會由MATLAB來加以處理。
最後,MATLAB的處理可以藉由按下Control-C(同時按下Ctrl和C鍵)在任何時候被中斷。

2.5複數 COMPLEX NUMBERS


MATLAB最強大的特性之一就是:它不需要特別的處理就能加以運算複數。
複數在MATLB中以數種方式構成。舉例來說明複數:
>> c1=1-2i %附加的 i 表示虛數
c1 =
1.0000 - 2.0000i
>> c1=1-2j %j 也是一樣代表虛數
c1 =
1.0000 - 2.0000i
>> c2=3*(2-sqrt(-1)*3)
c2 =
6.0000 - 9.0000i

>> c3=sqrt(-2)
c3 =
0 + 1.4142i
>> c4=6+sin(.5)*i
c4 =
6.0000 + 0.4794i
>> c5=6+sin(.5)*j
c5 =
6.0000 + 0.4794i


在最後的二個例子中,MATLAB的預設值i=j= 被用來構成虛部。在此例中,乘i或j需要有乘號,因為在MATLAB中sin(.5) i或是in(.5) j是沒有意義的。以上頭最前二個例子來說明,在等號右方的數值部份以字元i或j來終止才有用,而在等號右方的表示式以字元i或j來終止就沒有作用了。

一些程式語言需要對複數作特殊的處理。在MATLAB中,並不需要特殊的處理。複數上的數學運算已經和實數一樣了:
>> c6=(c1+c2)/c3 %利用上方例子的數據
c6 =
-7.7782 - 4.9497i
>> c6r=real(c6)
c6r =
-7.7782
>> c6i=imag(c6)
c6i =
-4.9497
>> check_it_out = i^2 %sqrt(-1) 的平方必須是 -1!
check_it_out =
-1


一般來說,複數上的運算結果應該還是會是複數。不過從上頭的最後一個例子可以看出:MATLAB聰明得可以捨去結果中為零的虛部。此外,上頭也說明了函式real和imag可以分別取出複數的實部和虛部。

我們考慮以Euler (聽起來像oiler)identity 來作為複數的最後一個算術例,Euler identity將複數polar form和rectangle form = a+bj的關係建立,其中polar form的參數有大小強度M和角度 ,而給定的角度的型式是 。其中它們的關係為 , , , 。

在MATLAB裡,極座標與直角座標的轉換是利用real, imag, abs 和angle函式來達成。
>> c1
c1 =
1.0000 - 2.0000i
>> mag_c1=abs(c1) %magnitude(強度大小)
mag_c1 =
2.2361
>> angle_c1=angle(c1) %angle in radians(以弳度表示)
angle_c1 =
-1.1071
>> deg_c1=angle_c1*180 / pi %angle in degrees(以角度表示)
deg_c1 =
-63.4349
>> real_c1=real(c1) %實部
real_c1 =
1
>> imag_c1=imag(c1) %虛部
imag_c1 =
-2

MATLAB函式abs根據你給它的資料是什麼,會計算出複數強度的大小或是實數的絕對值。同樣的,函式angle會以弳度為單位來計算出複數的角度。MATLAB並不使用角度來作為三角運算的單位。

2.6 浮點算術運算


幾乎所有在MATLAB裡的數值都是以雙精度表示,在內部則是以二元(以二為底)表示法。二元表示法是電腦最常用的表示法,對於共同數值處理也是最自然的型式。這種表示法使得不是所有的數字都能被精確地被表示,它們能表示的值有限。且對於加法來說,能表示的值被認為更有限。

最大正數可以表示如下:
>> format long %告訴MATLAB顯示更大的精度
>> realmax
ans =
1.797693134862316e+308

最小正數可以表示如下:
>> realmin
ans =
2.225073858507201e-308


加1之後會產生大於手的最小數字以雙精度表示是:
>> eps
ans =
2.220446049250313e-016

有限精度限制的結果有時會有點怪。舉例來說,加法並非精確的累加。
>> 0.42-0.5+0.08
ans =
-1.387778780781446e-017

>> 0.08-0.5+0.42
ans =
0

>> 0.08+0.42-0.5
ans =
0


以上三個例子的結果都應該為0,但是它們都不是。在每個例子中所執行的算術運算都是由左至右。發生此種情形的原因是因為並非所有的數字都用雙精度來表示。事實上,只冇05有精確的表示。當數字不能精準地被表示,它們會儘可能近似地較精準-導致計算結果中不可避免的誤差。最重要的是,這些誤差非常小或在現今電腦中不會被用到。實際上,這些雙精度計算問題大都在MATLAB計算二個值是否相等時發生。顯然地,以MATLAB計算的話0.42-0.5+0.08並不等於0.08-0.5+0.42,即使用我們的大腦來計算,我們知道此二式確實相等。

有限精度算術運算的第二個影響在函式的估計時會顯示。除了不總是能夠精準地表示出函式的引數之外,大多數的函式本身也不能精確地被表示,舉例來說,
>> sin(0)
ans =
0

>> sin(pi)
ans =
1.224646799147353e-016


在此二個結果都應該是0,不過 卻不是。注意,有趣的是在此的誤差和之前例子的誤差都小於eps。

最後,MATLAB也使用雙精度浮點數來表示整數。用這種表示法,所有的整數直到上限都可以被精確地表示。上限值為:
>> bitmax
ans =
9.007199254740991e+015


這個值也就是 。

2.7 數學函式


下表中列出了MATLAB支援的一般函式。這些函式大多數都和它們的數學寫法相同:
>> x=sqrt(2)/2
x =
0.7071

>> y=asin(x)
y =
0.7854

>> y_deg=y*180/pi
y_deg =
45.0000


這些指令找到sin函數值為的 的角度。再次注意到MATLAB使用的是弳度。另一個例子如下:
>> y=sqrt(3^2+4^2) %3-4-5直角三角形的邊長關係
y =
5
>> y=rem(23,4) %餘數函式,23/4的餘數為3
y =
3

>> x=2.6, y1=fix(x), y2=floor(x), y3=ceil(x), y4=round(x)
x =
2.6000
y1 =
2
y2 =
2
y3 =
3
y4 =
3






t




















三角函式函式意義
acos Inverse cosine (反正弦函式)
acosh Inverse hyperbolic cosine
acot Inverse cotangent
acoth Inverse hyperbolic cotangen
acsc Inverse cosecant
acsch Inverse hyperbolic
asec Inverse secant
asech Inverse hyperbolic secant
asin Inverse sine
asinh Inverse hyperbolic sine
atan Inverse tangent
atan2 Four quadrant inverse tangent
atanh Inverse hyperbolic tangent
cos Cosine
cosh Hyperbolic cosine
cot Cotangent
coth Hyperbolic cotangent
csc Cosecant
csch Hyperbolic cosecant
sec Secant
sech Hyperbolic secant
sin Sine
sinh Hyperbolic sine
tan Tangent
tanh Hyperbolic tangent










指數函式 函式描述
^ Power
Exp 指數
Log 自然對數
Log10 以10為底的對數
Log2 以2為底的對數
Pow2 以2為底的乘冪
Sqrt 根號開方
Nextpow2 Next higher power of 2











複數函式 函式描述
Abs 絕對值
Angle Phase angle
Conj 複數共軛
Imag 虛部
Real 實部
Unwrap Unwrap phase angle
Isreal 如果是實數則為真
Cplxpair Sort numbers into complex conjugate pairs
Complex 從實部和虛部形成複數









四捨五入和餘數函式 函式描述
Fix Round to zero
Floor Round toward negative infinity
Ceil Round toward positive infinity
Round Round toward nearest integer
Mod Modulus or signed remainder
Rem Remainder after division
sign Signum function






座標轉換函式 函式描述
Cart2sph 苗卡兒座標到球座標
Cartpol Cartesian ot cylindrical or polar
Pol2cart Cylindrical or polar to Cartesian
Sph2cart Spherical to Cartesian











數學理論相關函式 函式描述
Factor Prime factors
Isprime True for prime numbers
Primes Generate list of prime numbers
Gcd 最大公因數
Lcm 最小公倍數
Rat Rational approximation
Rats Rational output
Perms 所有可能的組合
nchoosek N個元素一次取K個的所有組合數
























特殊函式 函式描述
Airy Airy function
Besselj Bessel function of the first kind
Bessely Bessel function of the second kind
Besselh Bessel function of the third kind
Besseli Modified Bessel function of the first kind
Besselk Modified Bessel function of the second kind
Beta Beta函式
Betainc Incomplete beta function
Betaln Logarithm of beta function
Ellipj Jacobi elliptic function
Ellipke Complete elliptic integral
Erf Error function
Erfc Complementary error function
Erfcx Scaled complementary error function
Erfinv Inverse error function
Expint Exponential error function
Gamma Gamma函式
Gammainc Incomplete gamma function
Gammaln Logarithm of gamma function
Legendre Associated Legendre function
Cross 向量外積
dot 向量內積

星期六, 三月 24, 2007

2007年「日經BP技術獎」決定,大獎由「程式設計語言Ruby」獲得

原文出處:http://corporate.nikkeibp.co.jp/information/newsrelease/newsrelease20070316.html
試譯者:jiing ,僅節譯Ruby部份

2007年3月16日
2007年「日経BP技術賞」決定
大賞に「プログラミング言語 Ruby 」

2007年「日經BP技術獎」決定
大獎由「程式設計語言Ruby」獲得


日経BP社主催の2007年(第17回)の「日経BP技術賞」がこのほど決まりました。

日經BP社贊助的2007年(第17回)的「日經BP技術大獎」於此刻已經決定了。
本賞は日経BP社がわが國の技術の発展に寄與する目的で創設したものです。毎年1回、電子・情報家電、情報通信、機械システム、建設、醫療・バイオ、エコロジーの各分野で、產業や社會に大きなインパクトをもたらす優れた技術を表彰します。

這個獎是日經BP社對我國的技術發展寄與厚望所創設的。每年一次、於電子、資訊家電、資計通訊、機械系統(System)、建設、醫療,生物學(Biology)、生態學(Ecology)的各個領域之中,表彰對產業和社會帶來大影響(Impact)的優良技術。
今回は2006年中に開発された技術の中から、審査委員會(委員長:田中昭二國際超電導產業技術研究センター副理事長)が、以下の大賞と部門賞、特別賞を選出しました。

這次是從在2006年中被開發了的技術中,由審查委員會(委員長:田中昭二國際超導體產業技術研究的中心副理事長)選出了以下的大獎和部門獎、特別獎。
大賞は、まつもとゆきひろ氏の「 プログラミング言語 Ruby 」に決まりました。このほか11件の部門賞を決めました。

被決選出了的大獎是松本行弘先生的「程式設計(Programming)語言Ruby」。此外,也選出了11件的部門大獎。
表彰式は4月6日午前11時から東京・虎ノ門のホテルオークラ東京で行います。

表彰典禮於4月6日上午11時起,在東京、虎之門的Hotel Okura東京舉行。
〈大賞〉
▲プログラミング言語「 Ruby 」

〈大獎〉
▲程式設計語言「Ruby」
まつもと ゆきひろ 株式會社ネットワーク応用通信研究所 基盤研究グループ 特別研究員

松本行弘 有限公司網路(Network) 應用通訊研究所 基礎研究團隊(Group) 特別研究員
1993年に開発したオープンソースのスクリプト言語。オブジェクト指向型で、「Java」と比べてコーディングが容易で、生產性が高いといわれている。2005年正式リリースの高生產性ウェブ・アプリケーション・フレームワーク「Ruby on Rails」により、ウェブ上の商用サービスや業務システム、自治體公式サイトなどビジネスでの利用も広がった。「 Ruby 」で記述したアプリケーションや、ライブラリー開発プロジェクトは千數百にも上り、これまでウェブ・プログラミングで用いられてきた「Perl」や「PHP」にとって代わる勢いがある。日本生まれのソフトウエアで、海外の著名プログラマーからも評価が高い。

於1993年開發了的開放源碼(Open source)的Script語言。一直被稱作是以物件(Object)導向、比「Java」更容易Coding、生產力更高。根據2005年正式釋出的高生產力的Web Application Framework「Ruby on Rails」、Web上的商用服務(Service)和業務系統(System)、自治體公開網站(Site)等等......在企業(Business)內的利用也很廣泛了。以「Ruby」記述了的應用程式(Applicaiton)和函式庫(Library)開發的專案(Project)也有成千上百個以上、到此刻為止,有取代能夠被用於Web. Programming的「Perl」和「PHP」之趨勢。是原生於日本的軟體(Software)、連海外著名的程式設計師(Programmer)也評價很高。

星期五, 三月 23, 2007

D.S醫院主題餐廳一遊

今晚下班後,和公司同事們前往「D.S醫院餐廳」,剛開車到時,同事還說她以為是在賣任天堂NDS的,因為店門口是二個大英文字--DS。其實這家店裡的賣點就是所有的服務生都是穿著緊身的護士服,然後包廂叫「加護病房」,進店門口還要「掛號」,集滿五點可換一張「健保卡」,然後還可以換「針筒」:裡面裝的是雞尾酒。簡單地來講,就是一家惡搞醫院、醫生、護士的餐廳,想不到今晚還遇到吳建恆和陳怡蓉(本人臉超小的),看起來好像在拍美食節目,店員要我們小聲點,不要妨礙拍攝。

大概店員也知道來這家餐廳的人多半是醉翁之意不在酒吧,所有人剛坐下來,讓大家選一下要一齊點什麼餐--有A餐、B餐和C餐(依人數分),然後大概沒五分鐘吧,幾乎所有的菜就都上完了,然後一鍋火鍋裡也沒什麼料(大概三塊雞肉吧,不過可以無限續湯),比較有趣的是他的飲料是掛在牆上的「點滴」,然後有的看起來像「血漿」(蕃茄汁加一點酒,不過沒什麼酒味),有的看起來像「藥水」(百香果+伏特加 => 黃色,哈密瓜汁+酒 => 綠色藥水),然後大家就一會兒就把所有的菜都喀光了(因為菜的量不大,而且只有四、五個女生去吧) 。到了八點十分左右,開始店內最著名的表演,今天是二個辣妹跳熱舞(非常熱,應該算是「愉悅」限制級的吧),然後鎂光燈此起彼落地閃個不停,表演完畢,大夥兒又聊了一下天,說說笑好,蠻愉快地,大約九點左右,夥決定做鳥獸散,不再等十點的濕背秀了,準備各自返家,今天十三個人吧,大概花了快八千吧。而今日一遊的心得是:「這種店真是給人長見識的,而在台灣啊,真的什麼錢都有人要賺啊~~」

有圖有真相:

陳怡蓉現身
DSC09385

冒牌醫生和小護士
DSC09419

點滴就是店裡的飲料
DSC09408

鹹濕的濕背秀(有人的褲檔也被女舞者弄濕了--倒冰塊下去......)
DSC09435

小孩勿學:p
小孩勿學
店名:D.S Music Restaurant
訂位專線:02-2587-3226
網址:http://www.drs.com.tw
地址:台北市中山區新生北路三段7號1樓

相關連結:

星期四, 三月 22, 2007

朋友的和多工作室開張,賀!

朋友們開了一家和多設計工作室
其中的成員有
三個人都在開放源碼軟體貢獻了不少心力,而且實力十分堅強,如果有公司的案子要外包,找他們就對了!

原本想說是不是像日劇《愛情白皮書》裡,一人拿一個字來命名,不過沒有g,應該不是。對"handlino"有點好奇--不知道這個字是什麼意思,於是我亂拆來查看看: hand+lino ? handle + lino?

lino
li·no(noun)
Definition:
U.K. ( informal )
Same as linoleum

[Early 20th century. Shortening]


linoleum
li·no·le·um(noun)
Definition:
floor covering: a tough washable floor covering, made from canvas or other material coated under heat and pressure with powdered cork, rosin, and linseed oil

[Late 19th century. < Latin linum "flax" + oleum "oil"]


雖不是很瞭解其意涵,但可以知道這個團隊未來有可能寫下歷史。

PS:我也好想有一個這麼強的團隊啊~~

星期三, 三月 21, 2007

又小瘦了一丁點

前陣子努力運動瘦身的結果之後,最近又降了一丁點。

weightControl0215-2007
二月15日的成果
weightControl0321-2007
三月21日的成果

看來還要再接再厲!

最佳化晶圓曝光之二維反覆切割程序法

原本是命名為:最佳化晶圓曝光之二維反覆切割程序法(A Two-Dimensional Cutting Algorithm for Optimizing Wafer Exposure Pattern)
後來被柯泰德改為:Optimization of Wafer Exposure Patterns Using a Two-Dimensional Cutting Algorithm

昨天看到硬碟裡還有些可以公開的東西,於是就拿出來秀一下了,這篇論文是我碩一末時的成果,(不過卻不是我的碩士論文,我的碩士論文又另外做了「單一貨櫃排貨支援系統」)直到博一才刊登在IEEE Semiconductor Manufacturing期刊上,事實上,IEEE那篇是後來半導體廠的人看了這個方法,也又發展出另一個方法,原本是刊在 International Transactions in Operational Research期刊上

後來我讀到博士班時,因為發現這篇論文的專利被指導教授暗地污走(巧取豪奪?),加上指導教授幾乎根本沒有花時間和心思在指導學生上,(我從他身上學得的,好像很少在學術或研究上:p)。當年我憤而離開了某研究室(那時我已有三篇論文發表了,點數已集全...orz),本論文的價值在於發現八吋以上晶圓的對稱性並且善用此對稱性來解決切割定位點的選取問題。記得我當時用圓規在白紙上畫了不少晶圓圖,本文獻的演算法是由我和我的強者同學王應龍在討論間產生的,絕非其他人的原創(Original Idea),至於參考資源,確由半導體廠的人員及指導教授提供,這點我不能否認,但是專利完全沒我的名,這點我一樣也不能接受 。

PS:本論文的程式當初是以C語言寫成,其間清華大學資工所 王應龍先生(我的強者同學之一)還幫了我不少忙,在此要感謝他。m(_._)m

PS again: 本論文的相關程式及原文資料,都放在 這裡。採CC授權license_cc_80x15_2

以下是投影片及說明:

投影片1

大家好,我是jiing,這是最佳化晶圓曝光之二維反覆切割程序法的投影片首頁。

投影片2

英文版又多做了一次。

投影片3

主要是簡介晶圓廠在生產時的困難,及製程上的精細度從毫米變成微米和奈米,不斷地限縮,想要增加圓形的晶圓(wafer)上所能切割出的晶方(die)的數目,在後面的投影片你可以看到採用此方法(本方法所得到的解是最佳解!)能為半導體廠帶來多少效益。

投影片4

動機,其實重點就是最後一句"Little research has been done on the present approach.",這個佳句在寫論文時一定要插上一腳的啦。

投影片5

研究目標就是找出能最大化晶方數產出的樣型(pattern),也就是最小化浪費的區域。然後本研究的經費是由旺宏電子支援。

投影片6

首先講解八吋晶圓的幾何限制--它有二個alignment mark是不能被曝光的,所以在計算樣式時座標時要加以考量。本問題是一般化後的背包問題或是cutting and packing問題的一個特別案例。我們用反覆迭代的程序來解決此問題。

投影片7

本投影片講解八吋晶圓形狀及切割時的特性。由右圖可以看得出來一次的曝光cell如果是2x2的話,那麼要如何考慮切割不能切斷。

投影片8

右圖講解我們所發展出的演算法將一塊晶圓分為六塊區域來考量,但後來你又可以發現其實由於上下及左右的對稱關係,如何去縮減反覆迭代程序的搜尋範圍。注意 area1和area5上各有二個小黑方塊,那就是之前所謂的定位點(alignment mark)。至於圖形上的L1,L2,L3,則是指我們搜尋時的開始點,我們分為X方向(由L2到L3)和Y方向(L1的垂直移動)去搜尋切割的起始點。由於採窮舉法(但因對稱性,已將搜尋區間縮到最小),故所得的解為最佳解。

投影片9

計算的程序是先計算在二個定位點(alignment point)間的最大cells數目(一個cells可能含1x1,2x2或2x3, 3x2...等的晶方數,端看曝光設備),上圖的區域3是在L1和L2之間的上半部。L1是用來決定上半部的Y座標,而L2是用來決定區域3的起始位置。其它的區域要儘可能靠近中央區以增加晶方數。
又因為晶圓在切割時的縱橫切斷(guilotine cutting)的特性,所以在決定啟始點時,就決定了整個晶圓的其它區域的啟始點了。

我們運用畢氏定理來判斷一個cell中可用的晶方數的產出數良率有多少。這樣其實就把二維的問題以一維看待了(如圖所示)。在真實的晶圓廠中,工程人員可以訂定一個cost-effective ratio,具有成本效益的cell才會被曝光。

投影片11

真正實際曝光時的樣型(pattern)如右圖,其中標示了啟始點及定位點(alignment mark)的座標位置。而各項數據則在左方。如依此演算法下去切割,可以得到一片晶圓上總共可有101個cell內含269個晶方。
PS:右邊那個圖是我當年用AutoCAD刻出來的,花了一個凌晨(*呼~~~*)

投影片12

詳細的數據列表,第3號是目前的案例。Gross die是產出的晶方數,將半導體廠原本的(original)和我們的方法(proposed)相比。

投影片13

本研究中發現了什麼事呢?
1.我們可以增加4.61%的效益
2.最佳解相當強固
3.可以再套用其它的評斷法則
4.很容易做敏感性分析

投影片14

可以再套用在其它的產品上(如12吋晶圓)來計算比較。
專利申請中(此專利同時含六吋晶圓和八吋晶元的部份,六吋晶圓的形狀與八吋的不同,六吋晶圓底部為平的,故無本研究中的雙對稱性),當年還在申請中,後來申請出來我才發現根本把我所做的部份掛我指導教授的名字,讓人超不爽)。

投影片15

這又是個一魚多吃的研究,申請國科會補助、去旺宏接case,再去申請專利、再去投paper幫忙升等,後來還用這個研究得了什麼業界最佳實務的研究人員獎。真是了不起(Y) (*拍手ing*)

對了,當初我離開研究室時,我的吳姓學弟還和我說:「他不會像你講的這樣,我寫的論文他都把我放第一順位,他自己擺後方。」,當時我沒有辯斥,但是啊,當時他已經用我的paper集滿點數了,論文對他而言只是裝飾品而已,不再是必需品了。當然了,我們學生們(那些生產論文的工具啊)也不再被需要了。(* 哼!中指一根XD*)

星期一, 三月 19, 2007

上網學日文--帶了就走

作者:吳權威
出版日期:2002年6月
出版社:碁峰出版

這本書是昨天無聊去圖書館亂逛時看到的,借的時候就被告知過是沒有光碟的,不過我本來就想說拿來翻翻,看看有什麼是我不知道的。看了一下,發現這位作者其實在書最後的整理表中,有好幾個地方是同一個連結出現了二次,上網去查了一下,這位作者出版過的書還真是多。而且包羅萬象。本書另有上網學日文-練功篇,還有一本上網學英文--帶了就走。我想之前priv所提供的早安日語網站,加上這本書裡面有蠻多還不錯的連結,應該有足夠的資料可以學習和閱讀。不過本書的年代久遠,也不知道連結有無失效,暫整理如下:


聽力練習


唱歌學日文


看日劇學日文


日本留學資訊


日本走透透


明星一把捉


流行


上網交朋友


線上廣播網站精選


日本書店


教育單位網站精選

星期日, 三月 18, 2007

一分飲恨

話說最近每天晚上只要還有力,都會騎室內腳踏車20公里以上,於是乎,早上有時候根本爬不起來,然後三月的某一天......,原本以為可以及時到達的,想不到在搭電梯上樓時,半路殺出了二個程咬金,於是倒楣的我就遲到了「1分鐘」了,結果是請了四個小時的事假......Orz^2

真是「一分飲恨」啊~~~

有圖有真相,如下圖:

1min_regret