一些與 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)... 等都可使用。 (待續)