To say a simple thing

Tuesday, November 15, 2005

Code optimization

最近在寫 fuzzy 作業,這個作業需要寫程式,本來是想用 Matlab 寫的,但寫了一小段之後就放棄了,因為 Matlab 這個程式語言的彈性實在太差,為了寫一個 function 還要新建一個檔案,實在有夠鳥。最後我還是用我喜歡的程式語言 Python 寫,輕鬆愉快啊。我遇到一個程式碼最佳化的問題,原來的一段程式碼如下:

for i in range(1,12):
for j in range(1,12):
mu_Ai = mu_A(i,x)
mu_Aj = mu_A(j,y)
t1 = t1 + mu_Ai * mu_Aj
t2 = t2 + g(step*(j-1)) * mu_Ai * mu_Aj

修改成

for i in range(1,12):
mu_Ai = mu_A(i,x)
if abs(mu_Ai) < eps:
continue
for j in range(1,12):
mu_Aj = mu_A(j,y)
if abs(mu_Aj) < eps:
continue
t1 = t1 + mu_Ai * mu_Aj
t2 = t2 + g(step*(j-1)) * mu_Ai * mu_Aj

速度從 0.98 sec -> 0.12 sec,提升了 8.17 倍啊!其實程式碼在完全沒有最佳化所花費的時間是 2.5 sec,所以最佳化所提升的效率是 20.83 倍,真是恐怖。

English translation of the above:

Recently I have to write my fuzzy homework. Firstly, I planned to use the Matlab programming language to do this job. But, after writting a piece of source code, I gave up because the Matlab programming language is hard to use. When I want to write a function, I have to write this function in a new file! So finally I turned to my favorite language, Python, and the homework is done within an hour.

The second piece of source code is the optimized version of the first piece of source code. The first one takes 0.98 sec and the second one takes 0.12 sec. The performance improvement is 0.98/0.12 = 8.17. Actually the original unoptimized one takes 2.5 sec, so the optimization makes my program 2.5/0.12 = 20.83 times faster. Wow!!!

ps. It is painful to embed the source code in the article. In WYSIWYG mode, the source code looks awful.

Monday, November 14, 2005

Commonly used software (常用軟體)

好像總是每個禮拜一才比較時間寫寫部落格,今天就把我常用的免費軟體做個列表好了。 我覺得一個好的軟體所要具備的條件是:介面簡潔,程式啟動快速,不會影響作業系統的執行。


[Edit]
  1. Vim: 史上最強的 text editor,沒有 Vim 的話我在使用電腦時就好像斷了一隻左手。
  2. MiKTeX: 我是使用 LaTeX 來當做我的 typesetting system,而 MikTeX 是 TeX 的一個 windows distribution,也可以編譯 LaTeX。
  3. ConvertZ: 簡繁轉換軟體,好用。

[Math]
  1. Sciab : 打算用來取代笨重且昂貴的 Matlab。不過 Scilab 不能從我常用的命令列來呼叫啊!我有找到另一個軟體 Octave,Octave 是發展於 unix 平台的,如果要在 windows 上使用的話,好像要裝 Cygwin,不過我用 google 找到一個 Octave for windows
  2. Gnuplot: 需要科學繪圖的話首推 Gnuplot。


[Net]
  1. FileZilla: FTP 傳輸軟體,我只拿來當 ftp client,好像也可以當 server 的樣子。已經取我原來使用的 LeapFTP
  2. PCMan's FTP Server: FTP 架站軟體,台灣人寫的。
  3. PCMan: bbs 連線軟體,作者同上。最早我是使用 Netterm,後來換成 PacketSiTE,而且我也註冊了,不過 PacketSiTE 好像已經停止發展了,所以我換到 PCMan。
  4. Free Download Manager: 已經取代我原來使用的 FlashGet

[Pic & Music & Multimedia]
  1. Media Player Classic: light-weight media player for Windows.
  2. XnView: 看圖軟體,打算用來取帶原來的 ACDSee
  3. Picasa: 相片管理程式,目前還不常用。
  4. foobar2000: 聽音樂必備,已經取代我原來使用的 Winamp
  5. Exact Audio Copy: 抓音軌的軟體。
  6. LAME: MP3 encorder,LAME 是一個 command line 的程式,使用起來有一點不方便,所以就有人幫 LAME 寫 front-end (GUI 介面) 來方便 LAME 的使用。而我使用的 front-end 是 RazorLame

[Go]
  1. MultiGo: 用來看 sgf 檔的圍棋打譜軟體,這是目前我用過覺得最好的打譜軟體。

[Utility]
  1. 7-Zip: 打算用來取帶 WinRAR
  2. EVEREST: 得知電腦的硬體資訊,免費版本停止發展了。
  3. Daemon Tools: 虛擬光碟。
  4. Sysinternals: 這家公司有很多好用的小程式如 TCPViewProcess ExplorerAutoruns

Monday, November 07, 2005

My heart is like ocean (我心似海洋)

在逛薄荷的網站時,看到我心似海洋這一首的歌詞,於是我就到 Baidu 找這一首歌來聽聽看,覺得還蠻好聽的,以下是這一首歌的歌詞:

我心似海洋 - 演唱:江美琪 - 歌詞:葉向華、姚謙 - 作曲:陳國華

小小的光亮 就足夠 在黑暗中指引方向
微微的眼神 卻能夠 推開孤單得到溫暖

輕輕的歌唱 若有情 就能讓人打開心防
淡淡的情感 有時候 卻能綿綿不絕不斷

多希望我是盞燭光 在你需要時候發亮
當你迷失指引方向 讓你脆弱時不再迷惘
我的心是一片海洋 可以溫柔卻有力量
在這無常的人生路上 我要陪著你不棄不散

我想要大聲歌唱 任何人都不能阻擋
與你分享生命之中 所有的快樂所有悲傷
我們的愛一直成長 不停付出不再隱藏
屬於我們的挫折希望 像露水滋潤花朵 綻放

就是這種光亮 小小的 卻能夠為人指引方向
就是這種愛啊 淡淡的 卻能夠給人無限希望
我在找這一首歌的 mp3 還有一段小插曲,一開始聽這首歌的時候,覺得幾個地方有點奇怪,一開始怎麼會有口白,而且 foobar2000 中的 mp3 資訊演唱者欄位是寫著 [To someone]。反覆聽過幾次之後,我還是願意相信這是江美琪的聲音,可是 mp3 中有幾個地方跟歌詞不合,尤其是最後兩句:給人無限希望為人指引方向的 ``人",都沒有唱清楚,我覺得這不太合理,因為歌手的咬字通常都非常清楚。 還有我想要大聲歌唱這一句,居然唱成我想要大聲歌唱,讓我不禁懷疑是歌詞寫錯了嗎?

這個疑惑在我下載另一首 mp3的時候解開了,原來我第一個找到的 mp3 居然不是原唱江美琪的版本,應該是網路上某個女生自己錄的版本。可是我聽了好幾次都沒發現這不是江美琪的聲音,雖然我硬碟中也沒有江美琪的歌,但根據電視給我的印象,江美琪的聲音應該是這樣沒錯。 我只能說這位網友的演唱功力直逼職業水準,讓我聽了這麼多次都沒發現。

我覺得這位網友的演唱版本(以後簡稱 N)跟江美琪的版本比較起來各有特色。N 的音質不錯,扣除掉唱錯歌詞的部分,跟原唱比較起來,高音顯得有點吃力。江美琪是屬於有點美聲的唱法,感覺她唱得蠻輕鬆的。不過我覺得 N 在感情的投入上似乎還比江美琪來得多一些。

ps. 後來我又聽了好幾次,發現 N 在第三段燭光的唱法跟原唱不同,應該說唱錯了。發現之前之所以會覺得 N 在感情上比較投入的原因,是因為 N 在詮釋這首歌時給人一種悲傷的感覺,而江美琪的詮釋則是給人快樂的感覺。我還發現專業歌手跟業餘歌手的差別,N 的尾音不穩而且會掉,感覺中氣不足,但江美琪的尾音則十分完美,轉音也很自然,如果要用兩個字來形容的話就是流暢

我發現 blogger 的標題如果使用中文會不能正常連結,所以就換成英文標題。