Pages

2011年5月23日 星期一

[通訊] BPSK錯誤率筆記


BPSK通訊系統的錯誤率分析:

根據下圖:

clip_image002

現在若我們要計算錯誤率,那麼,很簡單,只要計算:傳送端送訊號為0結果接收端收成1。

因為這個錯誤率跟傳送端送1而接收端收成0的機率一樣。

所以根據上圖,可以看出,要計算傳送端送0然後收錯收成1的機率,勢必要先積分一個pdf。這個pdf就是高斯雜訊,將高斯雜訊從0往+1的方向一直積到無限大:(往 ”傳送訊號理當落在的位置”的反方向積分過去)

clip_image004

在這裡要注意,所謂傳送0在BPSK是指送clip_image006,送1是指送clip_image008。所以,如果要用coherent receiver來接收,其整個接收端架構的意義為先對基底向量做內積,求得基底方向的分量,再用一個判斷正負的設備來判斷此分量是大於0還是小於0。

2011年5月22日 星期日

[通訊] M-ary QAM

MQAM
每個點的基底向量分量為sqrt(E0)的整數倍,因此可看出基底向量被離散的振幅所調變,因此為quadrature amplitude modulation。

MQAM2

我們可以從圖發覺,這些點有分成振幅比較大的,跟振福比較小的。

像中間紅色的部分,對Gaussian的pdf取積分,可以得到這部分的正確率是:clip_image002[8]

而信號落在橘色的邊緣,正確率在積分的時候就必須一個高斯從-sqrt(E0)積到sqrt(E0),另一個從-sqrt(E0)積到無限大。這樣造成正確率為:
clip_image002[12]

同理也可以積分算出藍色區域的正確率:
clip_image002[14]

另外,我常常忘記一個很簡單的公式,在此記錄一下:
clip_image002[16]

2011年5月21日 星期六

[Java] I/O:FileReader簡單用法

使用Java的IO都要import java.io.*;
FileReader可以包成BufferedReader,方便readLine()函式讀入一行。
例如:

   String fileName = “in.txt”;   //要被讀取的檔名。
   BufferedReader input = new BufferedReader(new FileReader(fileName));
   String tmp;
   while((tmp = input.readLine()) != null)
        System.out.println(tmp);
   //…
   input.close();

[軟體] Vim環境設定for Windows

由於喜歡使用vim來當程式撰寫的編輯器,Vim真的很適合長時間撰寫code。因此我終於,還是在windows下灌了Vim了。

在安裝好Vim後,新增一個Path,這個Path為:安裝目錄\Vim\vim73;
如此就可以在cmd下執行vim。例如假設安裝Vim在C:\Program Files\Vim,則Path設定就為:C:\Program Files\Vim\vim73;

接著就是一些偏好設定:
更改vimrc這個檔案就可以設定vim環境。在Windows下,更改環境設定的檔案是在:安裝位置\Vim
例如安裝位置是在C:\Program Files\Vim,則可以在C:\Program Files\Vim\目錄下找到 "_vimrc” 這個檔案,裡面就可以輸入偏好設定。
vim有趣的是它擁有自己的script,可以用這些script來設定環境參數。以下列出一些我常用的設定:


1.   set nu      “顯示行號
2.   set hls     “set highlight search.
3.   set ic       “搜尋關鍵字忽略大小寫
4.   set ai       “自動縮排
5.   syntax on   “syntax顏色標記啟動
6.   set bs=2 “Backspace可以在插入模式下刪字刪行
7.   statusline設定:目前看不太懂這方面的script。等之後研究好再補上來。

一直覺得Vim的Script真的挺複雜的。

2011年5月20日 星期五

[數學] Structural Induction

以下是我學習Structural Induction過程的一些想法:
Structural Induction是一種證明遞迴定義的方法。而許多遞迴定義根據我目前的學習,都是一個非常原始的初始條件,加上一個類似國中高中學過的若k成立則k+1也成立於這個遞迴定義中。

例如正整數定義就是:(1) 0是正整數。
                                        (2) 如果x屬於正整數,則x+1是正整數。
所以"structural"這個字我在這裡理解為:已架構觀點來做歸納法。這種"架構",就是上述所謂的"初始條件"加 "k成立則k+1成立" 之類的架構。
而且這種架構特別對"連續"的東西很容易去定義。譬如說整數,字串,樹等等。例如說電腦問使用者:"什麼是2的倍數?"
使用者可以回答:(1) 2是2的倍數。  (2)如果有一個數是2的倍數,那麼這個數乘以2也是2的倍數。
這樣電腦就知道:"喔!原來2,4,6,8…都是2的倍數。"
所以目前我覺得這種Structure應該沒有什麼困難的地方,只是一種表示法而已。
所以用Structural Induction來證明遞迴定義時,以我目前學習的結果,我會把遞迴定義看成:(1) A符合條件S  (2) 若B符合S,則跟B有關係的某個東西C也會符合S。
然後把這兩點證明出來,就等於使用Structural Induction完成證明。
以上是我的一些小想法。
                         by Uncle

2011年5月19日 星期四

[數學] mathematical induction and strong induction

記錄一點關於數學歸納法跟strong induction的學習心得。
1.   Mathematical induction高中就有學習過,即:
P(n)是一個propositional function,n屬於正整數集合,則若符合兩個條件:(1)basis of induction成立,也就是說P(1)為ture。(2)當k>=1時,P(k)->P(k+1)。
則根據數學歸納法,對於每個n屬於正整數,P(n)恆成立。
2.   Strong mathematical induction:
這是一種先假設P(n)在n = n0時成立,如果在n>=n0且n<=k的所有n都讓P(n)為true的前提下 –> P(k+1)為true,則根據Strong mathematical induction,對於所有的n>=n0,P(n)為true。
mathematical induction 和 strong induction在邏輯上是equivalent。
為什麼是equivalent呢?我的想法是:mathematical induction是P(1)為真,然後P(1)->P(2),P(2)->P(3),P(3)->P(4),P(4)->P(5)…P(k)->P(k+1)。
而Strong mathematical induction則是:P(n0)為真,然後P(n0+1)->P(n0+2),[P(n0+1)…P(n0+2)]->P(n0+3),[P(n0+1)…P(n0+3)]->P(n0+4)… [P(n0+1)…P(k)]  -> P(k+1)。
所以Strong mathematical induction只是用很多項為真時堆導出下一項,而mathematical induction則是每一項推導出隔壁項,一直到把全部序列都證明到為真。但在Strong induction裡面,每一項的成立其實也可視為隔壁項推導過來的(我是將k視為可以變動)。這是我的想法,希望沒有想錯。
                            by Uncle.

2011年5月18日 星期三

[軟體] FreeCommander

今天在學弟跟學習一套新的免費軟體:FreeCommander。
這是一套類似檔案總管的軟體,然而跟Windows內的檔案總管不同的是,這個軟體有雙視窗、同步更新、許多鍵盤及滑鼠快捷鍵設定、快速以cmd開啟當前目錄、檔案壓縮解壓縮等等許多好用功能。

軟體下載位置:http://www.freecommander.com/index.htm

關於這個軟體的一些好用功能可在官方網站的Guide找到:
http://www.freecommander.com/fc_guide_en.htm