一些與 Matlab 和 Fourier Transform 相關的東西。
(參考相關網頁與「數位信號處理, 應用Matlab - 蒙以正」)

三角函數的參數單位為弧度,非角度。(ex. 用 sin(2*pi*t) 來畫週期為 1 的正弦波)

利用 format [long/hex/short] 來切換數值的「輸出」格式。非調整數值的精確度。

注意處理的變數是一般變數還是 array 或 matrix,注意「.」的使用。
(ex. A./B 是把 A 內的元素與 B 內的元素相除。A./B = B.\A)
(元素對應上出現問題通常會產生 error: nonconformant arguments)

「;」表示指令的結束,且不會顯示出指令的結果。

在 matrix 中利用「;」去區隔不同的 row。matrix 的定址使用「,」。
(ex. 建立一個 2x3 的 matrix: A = [1 2 3; 4 5 6])
(ex. A(2, 1) = 4)

「:」表示連續的概念。
(ex. 1:5 表示 1 2 3 4 5)
(ex. 100:-7:70 表示 100 93 86 79 72)

A(1:k, j) 表示 matrix A 中 column j 的前 k 個 elements。A(1:k, j) 仍為一個 matrix。
A(:, end) 表示 matrix A 中最後一個 column 的所有 elements。亦為 matrix。
(ex. 前例中 A(:, end) 的結果會是一個新的 matrix [3; 6])
(ex. 前例中 A(end, :) 的結果會是一個新的 matrix [4 5 6])

linspace 用來產生等差數列。
linspace(a, b, n) 產生首項為 a,末項為 b,項數為 n 的等差數列。
linspace(a, b, n) = a:(b-a)/(n-1):b。 (a 和 b 之間以 (b-a)/(n-1) 的大小做分隔,包含頭尾共 n 項)

利用 imag 和 real 取複數的虛部和實部。ex. sin(w*t) = imag(exp(j*w*t));
(note: 此 exp 包含了角度 w 的資訊, e.g., w = 2*pi*k)

信號 (signal) 的大小 (magnitude) 與相位 (phase):
(1) 三角函數 (sin, cos) 可用來表示信號在 X 軸 (時間軸) 上的變化。
(2) 指數函數 (exp) 用來表示極座標 (polar coordinate) 上的信號變化。
(abs: absolute value and complex magnitude)
(angle: phase angle; in radians, for each element of complex array Z. The angles lie between pi & -pi)

ex.
abs(cos) 為其振幅值。angle(cos) 為其相對於 Y 軸的正負值。
abs(exp) 為其半徑值。angle(exp) 為其徑度值 (rad) (表示其相對於 0度的相位)。
For real number X, abs(X) 相當於 X 的絕對值, angle(X) 為 0 或 pi 兩種可能。
For complex number Z, R = abs(Z), and theta = angle(Z), st. Z = R.*exp(i*theta).
ex. Z = 3+4i, --> R=5, cos(theta)=3/5.

In signal processing, the Nyquist rate is two times the bandwidth of a bandlimited signal or a bandlimited channel. Nyquist Rate: Fn = 2*B (B is the highest frequency at which the signal can have nonzero energy)
Usage: (1) as a lower bound for the sample rate for alias-free signal sampling; (2) as an upper bound for the symbol rate across a ... (according to (1) --> 取樣頻率 Fs > Fn = 2*B)

matrix 以 column 為單位。
e.g., A = [1 2 3; 4 5 6]
則 A(1) = 1, A(2) = 4, A(3) = 2, A(4) = 5, A(5) = 3, A(6) = 6。

size() 用來取 matrix/vector 的大小/長度,length() 的功用同等於 max(size())。
上例中,size(A) = [2 3], length(A) = 3。

Dimension 可匹配的情況下,vector 或 matrix 都可任意的合併。
e.g., vector:
a = zeros(1, 3); b = ones(1, 4); c = zeros(1, 3);
[a, b, c] = [0 0 0 1 1 1 1 0 0 0]
[a; b; c] = ??? Error using ==> vertcat. CAT arguments dimensions are not consistent.

e.g., matrix:
assume A = [a1 a3; a2 a4]; B = [b1 b3; b2 b4]; C = [c1 c3 c5; c2 c4 c6]; D = [d1; d2];
[A B; C D] = [a1 a3 b1 b3;   a2 b2 a4 b4;   c1 c3 c5 d1;   c2 c4 c6 d2]
[A B C D] = [a1 a3 b1 b3 c1 c3 c5 d1;   a2 a4 b2 b4 c2 c4 c6 d2]

matrix 使用 .* 或 ./ 可以對 matrix 內的每個 element 做運算。
某些 function 也可同時對 matrix 內的所有 element 做運算。(很好用)
e.g., (承上)
A .* B = [a1*b1, a3*b3;   a2*b2, a4*b4]
exp(A) = [exp(a1), exp(a3);   exp(a2), exp(a4)]
其他如 A .^ 2, log(A), sin(A)... 等都可使用。


(待續)







arrow
arrow
    全站熱搜
    創作者介紹
    創作者 leeming 的頭像
    leeming

    Living, loving

    leeming 發表在 痞客邦 留言(0) 人氣()