顯示具有 Digital Signal Processing 標籤的文章。 顯示所有文章
顯示具有 Digital Signal Processing 標籤的文章。 顯示所有文章

6/26/2019

[三角函數] 一類 離散餘弦取負值的條件

Claim 1: 令 $\omega \in (0, \pi/2)$,則 存在 正整數 $k $ 使得
\[
\cos(\omega k ) <0
\]==========


Proof: 首先回憶 floor 函數:對任意 $x \in \mathbb{R}$, $\lfloor x \rfloor$具備以下性質
\[
x-1 < \lfloor x \rfloor \leq x
\]現在給定 $0 < \omega < \pi/2$,並取
\[
k := 1 + \bigg \lfloor \frac{\pi}{2\omega} \bigg\rfloor
\]則利用前述的 floor 函數性質,我們有
\[
\frac{\pi}{2\omega} < k \leq 1 + \frac{\pi}{2\omega}
\]兩邊同乘 $\omega$ 則
\[
\frac{\pi}{2} < \omega k \leq \omega + \frac{\pi}{2}
\]因為 $\omega \in (0, \pi/2)$,我們可以進一步取上述不等式右方的上界,亦即 $ \omega + \frac{\pi}{2} < \pi$。故
\[
\omega k \in \bigg(\frac{\pi}{2}, \pi \bigg) \subset \bigg( \frac{\pi}{2}, \frac{3\pi}{2}\bigg)
\]注意到對任意 $\theta \in  \bigg( \frac{\pi}{2}, \frac{3\pi}{2}\bigg)$, $\cos \theta < 0$ ,故 $\cos(\omega k) < 0$。至此得證。 $\square$



Comment: 我們可將 claim 1 結果進一步推廣到包含有相位的情況:




==========
Claim 2: 令 $\omega \in (0, \pi/2)$ 且 $\theta \in (-\pi/2, \pi/2)$,則 存在 整數 $k >2$ 使得
\[
\cos(\omega(k- 1) + \theta) <0
\]==========


Proof:
\[
k_0 := 1 + \bigg\lfloor \frac{\pi/2 - \varphi}{\omega} \bigg\rfloor
\]則不難驗證 $\omega k_0 + \varphi \in (\pi/2, \pi)$ ,故 $\cos(\omega k_0 + \varphi) <0$。現在若取 $k_1 := k_0 + 1$ 則
\[
\cos(\omega (k_1-1) + \varphi)<0
\]至此得證。 $\square$


4/25/2018

[訊號與系統] LTI系統輸入輸出關係由 Convolution 決定 - 從離散時間觀點

以下我們討論 為何 線性非時變 (Linear Time-Invariant, LTI) 系統 輸入與輸出關係 由 所謂的 convolution 表示。為了避免過多繁雜的數學,以下僅討論離散時間的情況。首先我們需要一些定義的幫助:

========================
Definition: Unit Impulse Function in Discrete-Time (Kronecker Delta)
我們說函數 $\delta: \mathbb{N} \to \{0,1\}$ 為 unit impulse function in discrete-time time 若 $\delta$ 滿足
\[\delta \left[ n \right] = \left\{ \begin{gathered}
  1,\;\;\;\;n = 0 \hfill \\
  0,\;\;\;\; o.w. \hfill \\
\end{gathered}  \right.
\]========================

========================
Definition: Impulse Response
給定任意系統配備輸入 $x[n]$ 與輸出 $y[n]$ 關係為 $y[n] = T\{x[n]\}$其中 $T$ 視為 operator (定義在某函數空間),若輸入為 $x[n]=\delta[n]$ 則 輸出
\[
h[n] := y[n] = T\{\delta[n]\}
\]稱為系統 $T$ 的 脈衝響應 (impulse response)
========================


========================
FACT: 任意離散訊號 $x[n]$ 可由 $\delta$ 做組合疊加,亦即
\[
x[n] = \sum_{k=-\infty}^{\infty}x[i] \delta[n-k]
\]========================
Proof: 證明顯然,在此不做贅述。$\square$



========================
Definition: Linear System
給定系統 $T$ 滿足以下輸入與輸出關係: $y_1[n]=T\{x_1[n]\}$ 且 $y_2[n] = T\{x_2[n]\}$。現在定義 $x[n] =ax_1[n] + bx_2[n]$ 其中 $a,b \in \mathbb{R}$則我們說系統 $T$ 為 linear 若下列條件成立
\[
y[n] = T\{x[n]\}
\]且 $y[n] = a y_1[n] + b y_2[n]$
========================

Remarks:
上述 系統 $T$  其實可看按作 泛函分析中的 operator。故線性系統 就是 泛函分析中的 線性算子 (linear operator)。



========================
Definition: Time-Invariant System
給定系統 $T$ 滿足以下輸入與輸出關係: $y[n]=T\{x[n]\}$。現在定義 $x[n] :=x[n-d]$  其中 $d \in \mathbb{N}$ 則我們說 $T$ 為 time-invariant 若下列條件成立
\[
y[n-d] = T\{x[n-d]\}
\]========================


有了以上定義的幫助,我們現在有辦法給出以下為何 LTI 系統的輸入輸出關係確實為 convolution。


========================
Theorem: LTI input-output Relationship is Governed by Convolution
給定 線性非時變 (LTI)系統 $L$ 滿足
\[
y[n] = L\{x[n]\}
\]其中 $L$ 為 linear operator,則
\[
y[n] = \sum_k h[k] x[n-k]
\]========================
Proof:
由於 任意 輸入 $x[n]$ 皆可被表為 脈衝函數的 組合:
\[
x[n] = \sum_{k = -\infty}^\infty x[k] \delta[n-k]
\]現在將此訊號作為LTI系統 $L$ 的輸入,則由於 $L$ 為 linear operator 我們有
\begin{align*}
  y[n] &= L\left\{ {x\left[ n \right]} \right\} \\
&= L\left\{ {\sum\limits_{k =  - \infty }^\infty  x [k]\delta [n - k]} \right\} \hfill \\
   &= \sum\limits_{k =  - \infty }^\infty  x[k] L\left\{ \delta [n - k] \right\}  \;\;\;\; (*)
\end{align*} 接著因為 $L$ 為 time-invariant 我們可進一步改寫
\[L\left\{ {\delta [n - k]} \right\} = h\left[ {n - k} \right] \;\;\;\; (**)
\]故由 $(*)$ 與 $(**)$ 可得
\[y[n] = \sum\limits_{k =  - \infty }^\infty  {x[k]h\left[ {n - k} \right]} \]即為所求。$\square$

Comments:
上述 \[
y[n] = \sum\limits_{k =  - \infty }^\infty  {x[k]h\left[ {n - k} \right]}
\]一般又稱作 $x[n]$ 與 $h[n]$ convolution sum。記作
\[
y[n] = x[n] * h[n]
\]

9/27/2017

[訊號與系統] Frequency Modulation 淺嚐:Chirp Signal

回憶一般 弦波訊號
\[
z(t) = A \cos(2 \pi f_0 t + \phi) = Re\{A e^{j (2 \pi f_0 t + \phi)}\}
\]其中 $A$ 為振幅 ,$f_0$ 為頻率,$\phi$ 為相位。由上式,我們可以定義 $z(t)$ 的 "角度" 記作
\[
\psi(t) := 2 \pi f_0 t + \phi
\]由於上式為 linear in $t$ ,我們可觀察
\[
\frac{d}{dt} \psi(t) = 2 \pi f_0 := \omega_i(t)
\] 故 $z(t)$ 的角度 隨時間的瞬時變化率 為 $2 \pi f_0$  其單位為 (rad/s) ,若我們將其除掉 $2\pi$ 即可得到 (瞬時)頻率 $f_0$ (單位為 Hz)。

上述想法可以被進一步推廣如下:

Frequency Modulation (FM) Signal
現在我們將上述 $z(t)$ 做進一步簡單的推廣:假設
\[
x(t) := A \cos(\psi (t)) = Re\{e^{j \psi(t)}\}
\]則我們可仿造前述的方法來定義 瞬時頻率 (instantaneous frequency),亦即我們先對 $\psi(t)$ 對 $t$ 微分,可得瞬時角頻率 (instantaneous angular frequency)
\[
\omega_i(t) :=  \frac{d}{dt} \psi(t)
\]若對上式兩邊同除以 $2 \pi$ ,可得瞬時頻率 (instantaneous frequency), 記作 $f_i(t)$, 如下
\[
f_i(t) :=\frac{1}{2\pi}\omega_i(t) =  \frac{1}{2 \pi} \frac{d}{dt} \psi(t)
\]單位為 Hz。

以下我們看個 FM 調頻中的一類特殊例子,假設我們想要創造一組 弦波訊號 使其 頻率可以包含一段我們感興趣頻段,比如說我們想創造一組聲音其頻率 從 300 Hz 並且一路往上到 800 Hz,一種常見的做法是採用 chirp signal 來達成,其特性如下:給定初始頻率 $f_{int}$ 與 終點頻率 $f_{end}$, chirp signal 保證訊號頻率在 $f_{int}$ 到 $f_{end}$ 之間以連續且線性方式改變(比如遞增或者遞減),故此法又稱線性調頻。

FM Signal Example: Chirp, or Linear Swept Frequency or Linear FM
以下我們考慮一類特殊的 FM 訊號,亦即我們取
\[
\psi(t) := 2\pi \mu t^2 + 2\pi f_0 t+\phi
\]則對應的瞬時頻率為
\[
f_i(t) := \frac{1}{2 \pi} \frac{d}{dt} \psi(t)  = 2 \mu t + f_0
\]亦即我們發現瞬時頻率隨時間遞增,且在 $t=0$時後我們有 起始頻率 $f_0$。讀者可使用 下列 matlab code 來聽聽看 chirp 訊號 (起始的 瞬時頻率為 300Hz 一路往上到 800Hz):

% Generate an play a chirp signal

fsamp = 11025; % sampling frequency

dur = 2;
mu = 125;
Amp = 6;
f0 = 300;

dt = 1/fsamp;
tt = 0 : dt : dur;

psi = 2*pi*(100 + f0*tt + mu*tt.*tt);
xx = real( Amp*exp(j*psi) );

soundsc( xx, fsamp );



[訊號與系統] Amplitude Modulation 淺嚐:Beat Signal

回憶一般 弦波訊號
\[
x(t) := A \cos(2 \pi f_c t + \phi)
\] 其中 $A$ 為振幅,$f_c$ 為 (載波) 頻率,$\phi$ 為相位。現在我們考慮將上述弦波做進一步簡單的推廣如下:假設 振幅 $A$ 不再是常數,而是隨時間變化的函數 比如 $A:=a(t)$ ,則我們得到\[
x(t) = a(t) \cos(2\pi f_c t +\phi)
\] 上述稱為 振幅調變 (Amplitude Modulation) 的一般形式,其中 $a(t)$ 為 依時間變化的函數 且一般而言,假設 $a(t)$ 的最高頻率 $f_a << f_c$。

Comments:
1. 震幅 $a(t)$ 隨時間變化,可看成 振幅 被 "調變"(modulation)
2. 一般實際應用上, $a(t)$ 為多半為實際帶有信息的訊號 (比如 聲音,歌聲,影像...) 且其最高頻率會遠遠低於 載子頻率 $f_c$ ,使得我們在做 AM 處理之後,$a(t)$ 訊號可被方便傳送。
3. 當然,對於 $z(t)$ 的推廣不僅僅限於頻率,我們也可以對其頻率推廣,比如說將固定 $f_c$ 改成 $f_c:=\psi(t)$ 使其成為與時間有關的函數,此法會得到所謂的 頻率調變(Frequency Modulation, FM) 我們會另外再開一篇文章描述之,在此不做贅述。

以下我們看個經典的AM例子:

AM Example: Beat Signal or Sinusoidal AM
以下我們看個特例:假設 $a(t) := A \cos(2 \pi f_a t)$ 則我們得到 AM 訊號如下
\[
x(t) = A \cos(2 \pi f_a t)  \cos(2\pi f_c t +\phi)
\]上述訊號可以透過 Inverse Euler formula 將其改寫為
\begin{align*}
  x(t) &= A\cos (2\pi {f_a}t)\cos (2\pi {f_c}t) \hfill \\
   &= A \left( \frac{{{e^{j2\pi {f_a}t}} + {e^{ - j2\pi {f_a}t}}}}{2} \right) \left( \frac{{{e^{j\left( {2\pi {f_c}t} \right)}} + {e^{ - j\left( {2\pi {f_c}t} \right)}}}}{2} \right) \hfill \\
   &= \frac{A}{4}\left( {{e^{j2\pi {f_a}t}} + {e^{ - j2\pi {f_a}t}}} \right)\left( {{e^{j\left( {2\pi {f_c}t} \right)}} + {e^{ - j\left( {2\pi {f_c}t} \right)}}} \right) \hfill \\
   &= \frac{A}{4}\left( {{e^{j2\pi \left( {{f_a} + {f_c}} \right)t}} + {e^{ - j2\pi \left( {{f_a} + {f_c}} \right)t}} + {e^{j2\pi \left( {{f_a} - {f_c}} \right)t}} + {e^{ - j2\pi \left( {{f_a} - {f_c}} \right)t}}} \right) \hfill \\
   &= \frac{A}{2}\cos \left( {2\pi \left( {{f_a} + {f_c}} \right)t} \right) + \frac{A}{2}\cos \left( {2\pi \left( {{f_a} - {f_c}} \right)t} \right) \hfill \\
\end{align*}
Comments:
1. 上述 $x(t)$ 可表為 兩弦波相加,一般又稱之為 beat signal,生活上的實際應用為比如說同時按下兩兩相鄰的鋼琴琴鍵。
2. 我們有兩種觀點看上述的 Beat Signal,首先是 $x(t)$ 可以視為是 震幅隨時間變化的弦波,故若使用 MATLAB 的 soundsc(.) 函數播放,則聲音聽起來會是漸強在接漸弱,第二種觀點則是上述 $x(t)$ 為兩個具有不同頻率 ($f_c+f_a$ 與 $f_c-f_a$)的 弦波相加,那麼聽起來便會是兩種弦波分別以不同頻率產生的聲音疊加而成。
3. 那麼該如何分辨何時只聽得到一組漸強漸弱得弦波 或者 聽到 不同頻率的弦波? 以下有一個一般性的判斷法則:令 $T$ 為 $x(t)$ 的最終持續時間,且定義 "頻寬" $B:= 2 f_a$ ,若
\[
T\cdot B <<1
\]則一般而言我們沒有辦法到底是一組弦波或者兩個不同頻率得弦波。此議題等價物理中的 Heisenberg's Uncertainty Principle。



4/06/2017

[訊號與系統] FIR 與 Finite Convolution

在 系統理論 或者 訊號處理 的領域中,我們一般將 濾波器 (filter) 視作可用以移除某特定頻段的訊號 並且僅讓 部分指定的頻段訊號 可以通過 的 系統(system)。

現在 給定 一組 標準 有限脈衝響應濾波器(Finite Impulse Response Filter,  FIR filter) ,其 輸入/輸出之關係可用下列表述
\[
y[n] = \sum_{k = 0}^M b_k x[n -k]
\] 其中 $b_k$ 稱為 FIR 濾波器的係數,$x[\cdot]$ 為輸入訊號,$y[\cdot]$ 為輸出訊號。

Comments:
1. 上述 FIR 的定義中並不要求 未來的輸入訊號,亦即我們僅需要現在與過去的輸入 $x[n], x[n-1],...,x[n-M]$,一般稱此 FIR 為 因果系統 (casual system)
2. 上述 FIR filter 的 輸入/輸出關係 可被視為 有限摺積(finite convolution) 運算
3. 令輸入$x[n]$為具有長度 $L_x$ 的 sequence 且 $h[n]$ 為具有 長度 $L_h$ 的sequence 則其輸出 $y[n]$ 在經過 convolution 運算之後會具有長度
$$
L_y =L_x + L_h -1 \text {( why ? ) }
$$ 4. 在 MATLAB 中 內建函數 filter() 可以用來建構 上述 FIR filter,舉例而言,考慮一組 FIR
\[y[n] = \sum\limits_{k = 0}^3 {\frac{1}{4}} x[n - k] = \frac{1}{4}\left( {x[n] + x[n - 1] + x[n - 2] + x[n-3]} \right)\] 且輸入為 $sin(0.1 \pi n), \;\;\; n=0,1,...,99$ 則 我們可用 MATLAB code 來計算對應的輸出 $y$ 如下:

n = 0:99
x = sin( 0.1 * pi * n);
b = [1/4 1/4 1/4  1/4]
y = filter(b, 1, x)


另外注意到前述我們提及 輸入訊號與其 脈衝響應的和:
\[
y[n] = \sum_{k = 0}^M h[k] x[n -k]\;\;\;\;\;\;\; (*)
\] 上述結果稱作 finite convolution sum 且我們稱輸出 透過 $x[n]$ 與 $h[n]$ 做 convolution 而得。一個 更一般的 輸入/輸出 關係可表為
\[
y[n] = \sum_{k=-\infty}^\infty h[k] x[n-k] \;\;\;\;\; (**)
\]讀者不難發現若我們取 $h[n]=0$ 當 $n<0$ 以及 $n > M$ 時, $(**)$ 退化回 finite convolution 形式 $(*)$。



Example: Impulse Response For 3-Points Averaging System
令 $x[n] := \delta[n]$ 則 脈衝響應
\[
y[n] = \sum_{k = 0}^2 \frac{1}{3} x[n -k]
\]

在 MATLAB 中,convolution 運算可以透過 conv() 來實現:比如說
xx = sin( 0.1*pi*(0:50) )
hh = ones(11,1)/11
yy = conv(hh, xx);


線性非時變 FIR 濾波器

==================
FACT: 考慮 FIR 濾波器
\[
y[n] = \sum_{k = 0}^M b_k x[n -k]
\]則此 FIR 為 線性非時變( linear and time-invariant)
==================

Proof: 首先證明線性。令 $x_1[n]$ 與 $x_2[n]$ 分別為兩輸入,且其對應的輸出分別為
\[\begin{array}{l}
{y_1}[n] = \sum\limits_{k = 0}^M {{b_k}} {x_1}[n - k];\\
{y_2}[n] = \sum\limits_{k = 0}^M {{b_k}} {x_2}[n - k];
\end{array}\]現在考慮前述兩輸入的線性組合,亦即對任意 $\alpha, \beta \in \mathbb{R}$ 定義
\[
x[n] := \alpha x_1[n] + \beta x_2[n]
\]我們觀察
\begin{align*}
y[n] &= \sum\limits_{k = 0}^M {{b_k}} x[n - k]\\
 &= \sum\limits_{k = 0}^M {{b_k}} \left( {\alpha {x_1}[n - k] + \beta {x_2}\left[ {n - k} \right]} \right)\\
 &= \sum\limits_{k = 0}^M {{b_k}} \left( {\alpha {x_1}[n - k]} \right) + \sum\limits_{k = 0}^M {{b_k}} \left( {\beta {x_2}\left[ {n - k} \right]} \right)\\
 &= \alpha \sum\limits_{k = 0}^M {{b_k}} {x_1}[n - k] + \beta \sum\limits_{k = 0}^M {{b_k}} {x_2}\left[ {n - k} \right]\\
 &= \alpha {y_1}\left[ n \right] + \beta {y_2}\left[ n \right]
\end{align*}由於輸出為 $y_1[n],y_2[n]$ 之線性組合,亦即 $y[n] = \alpha y_1[n] + \beta y_2[n]$ ,故可知此 FIR 濾波器為線性。

接著我們證明非時變性質,對任意 $n_0 \in \mathbb{N}$ 考慮時延輸入訊號 $x[n-n_0]$,則不難發現
\[\sum\limits_{k = 0}^M {{b_k}} x[n - {n_0} - k] = y\left[ {n - {n_0}} \right]\]
亦即等量的時延輸入 導致 等量時延輸出,故此系統為非時變。$\square$




[Claude] 國小數學加減乘除法計算小遊戲:數學怪獸大亂鬥

心血來潮用 Anthropic Claude Opus 4.6 做的簡單國小數學乘除法計算小遊戲,感嘆AI工具之強大與便利。原本可能要耗時幾天的工作轉眼就完成,時代的巨輪確實在飛速轉動。  數學怪獸大亂鬥(Math Monster Brawl)對戰的國小數學 加減乘除 小遊戲連結...