- 1月 06 週四 202205:55
學測數學/三角函數超詳細公式總整理表(半角公式/二倍角公式/和角公式/積化和差/和差化積/正弦定理/餘弦定理/餘角關係)
- 12月 13 週一 202107:27
通道加密/編碼理論 Reed-Solomon Code (里德 所羅門碼) 介紹/原理解釋/應用/Channel Coding/Basics of Coding theory

我們先定義 Reed-Solomon Code 的生成矩陣 (Generator Matrix) 和奇偶檢驗矩陣 (Parity Check Matrix)。首先有一串非0而且值都不一樣的code locators a0,a1,...,an-1,以及另外一串非0的 column multipliers v0,v1,...,vn-1。奇偶檢驗矩陣定義成
- 12月 13 週一 202106:45
通道加密/編碼理論 Product Code 介紹/原理解釋/應用/Channel Coding/Basics of Coding theory
我們先介紹 Product Code。已知 A 是一個 [nA,kA,dA]q code ,B 是一個 [nB,kB,dB]q code。A和B的product code就記作A ⊗ B ,是一個 [nAnB,kAkB,dAdB]q code。具體來說,我們假設 A 是一個 [8,1,8]2 的 Repetition code (簡單來說 A 會把1個數字重複8次變成密碼) 而 B 是一個 [4,3,2]2 的 Parity Check code (B會根據3個位置當中1的數量調整第4個位置讓1總共有偶數個)。照剛剛的定義,A ⊗ B 就是 [32,3,16]2。
- 12月 12 週日 202100:07
通道加密/編碼理論入門 解單解釋Linear code、Block code、Hamming Weight以及Hamming Distance / Basics of Coding Theory
我們在進入正題之前要先介紹Codeword跟Code的關係,我們把一些碼字 (Codeword) 的集合定義成 Code (代號C)。舉例來說 C = {000,101,111},其中000, 101, 111分別就是三組 Codeword 。其中我們把Codeword的長度定義成length n,把 Codeword 的組數取2為底的log然後定義成dimension k (也就是說 k = log2|C|)。如果 C 的每個 Codeword 都有一樣的 length 那麼 C 就是 Block Code。如果 C 的任兩個 Codeword 相加會等於 C 的另外一個 Codeword,那麼 C 就是Linear Code (因為有線性的特性)。要注意的是這裡的數字都是0跟1組成的,所以0+0=0,1+0=1,1+1=0。
舉例來說 C = {000,100,001,101} 那麼 |C| = 4 ,Codeword 的 length = 3,而 dimension k = log24 = 2。我們隨便把兩個 Codeword 相加就會發現相加完的結果依然是 Codeword。000 + 100 = 100,100 + 101 = 001,100 + 001 = 101 等等,所以這是一個Linear code。此外,因為所有 Codeword 的 Length 都是3,所以這同時也是一個 Block code。
舉例來說 C = {000,100,001,101} 那麼 |C| = 4 ,Codeword 的 length = 3,而 dimension k = log24 = 2。我們隨便把兩個 Codeword 相加就會發現相加完的結果依然是 Codeword。000 + 100 = 100,100 + 101 = 001,100 + 001 = 101 等等,所以這是一個Linear code。此外,因為所有 Codeword 的 Length 都是3,所以這同時也是一個 Block code。
- 12月 11 週六 202105:06
密碼學\超白話解釋McEliece算法 (McEliece Cryptosystem) \入門密碼學\ Channel Coding\ 通道加密
在開始介紹McEliece的算法之前,我們要先簡單說明一點背景知識。Alice想要傳送一段訊息給Bob但是又不想被Eve知道訊息的內容,Alice就必須把她想傳送的訊息加密,Bob則把收到的訊息解密,如此一來就算Eve攔截到傳送中的訊息也只能看到加密後的版本 (加密跟解密方式晚點會介紹)。這裡Alice想傳送的訊息叫做明文(Plaintext),而加密過後的訊息則叫做密文(Ciphertext)。
McEliece的加密方法總共會有五個參數,其中三個參數 (代號S,G,P) 組成私鑰 (Private Key),另外兩個參數 (代號G',t) 則會組成公鑰 (Public Key)。首先Bob (欲接收訊息者) 會設計出公鑰以及私鑰,顧名思義Bob會將公鑰公開而將私鑰自己藏起來,這麼一來大家都知道Bob的公鑰了。Alice就可以把自己想要傳送的訊息和Bob的公鑰相乘 (在電腦的世界裡我們的資料都會被量化成0跟1,所以你可以把Alice想傳送的訊息以及公鑰想像成一串0跟1組成的數字,這兩串數字乘起來就是加密的第一步),接著Alice還會再加上一段誤差向量 (Error Vector),代號寫作 e。
McEliece的加密方法總共會有五個參數,其中三個參數 (代號S,G,P) 組成私鑰 (Private Key),另外兩個參數 (代號G',t) 則會組成公鑰 (Public Key)。首先Bob (欲接收訊息者) 會設計出公鑰以及私鑰,顧名思義Bob會將公鑰公開而將私鑰自己藏起來,這麼一來大家都知道Bob的公鑰了。Alice就可以把自己想要傳送的訊息和Bob的公鑰相乘 (在電腦的世界裡我們的資料都會被量化成0跟1,所以你可以把Alice想傳送的訊息以及公鑰想像成一串0跟1組成的數字,這兩串數字乘起來就是加密的第一步),接著Alice還會再加上一段誤差向量 (Error Vector),代號寫作 e。
- 12月 05 週日 202101:00
Matlab 用rot90把向量轉項/用rot90把矩陣轉向/用rot90把向量轉90度/用rot90把向量轉90度

rot90是一個很方便也很常用的指令,可以把陣列轉向。舉例來說我們創造一個由1到10組成的向量
a = 1:10
- 12月 03 週五 202105:21
Matlab 善用reshape指令把陣列分段

reshape可以把一段陣列重新排成不同的樣子,舉例來說A是1到10的陣列。
A = 1:10;
- 12月 03 週五 202105:13
Matlab 簡單畫出波德圖/Bode plot

舉例來說,函數是1/((R^2)*(c^2)*(s^2)+2*R*c+1),其中R=1k歐姆,c=100*10^(-9)法拉。波德圖就可以用以下的程式碼畫出來。
R = 1000;
c = 100*10^(-9);
numerator = 1;
denominator = [(R^2)*(c^2),2*R*c,1];
sys = tf(numerator,denominator);
bode(sys);
- 11月 16 週二 202121:46
Matlab tic toc功能/介紹/Matlab的計時方法

當我們在執行Matlab的指令時有時會想知道這些複雜的運算要花多少的時間,或是我們想比較哪一種方法可以比較快產生我們想要的結果,這時候就可以用tic toc來完成這件事。可以把tic toc當成Matlab的計時器來用,舉例來說如果我們想知道畫一張圖要多少時間就可以用以下的指令。
tic
x = [1 2 3 4 5 ];
plot(x);
toc
- 11月 16 週二 202107:51
Matlab linspace介紹/功能/用法

linspace是在用matlab時很常用到的指令,主要功能在製造出一組等距的向量。舉例來說,若要在-10~10之間產生100個等距的數字,就可以用這個指令。
L=linspace(-10,10)

