はじめに
レート変換に於いて Noble Identity と呼ばれるよく知られたブロック図の等価変換がある。これについて考えたことをメモしておく。
\[
% 汎用
\newcommand{\ctext}[1]{\raise0.2ex\hbox{\textcircled{\scriptsize{#1}}}}
% 数学
% 汎用
\DeclarePairedDelimiterX{\parens}[1]{\lparen}{\rparen}{#1}
\DeclarePairedDelimiterX{\braces}[1]{\lbrace}{\rbrace}{#1}
\DeclarePairedDelimiterX{\bracks}[1]{\lbrack}{\rbrack}{#1}
\DeclarePairedDelimiterX{\verts}[1]{|}{|}{#1}
\DeclarePairedDelimiterX{\Verts}[1]{\|}{\|}{#1}
\newcommand{\as}{{\quad\textrm{as}\quad}}
\newcommand{\st}{{\textrm{ s.t. }}}
\DeclarePairedDelimiterX{\setComprehension}[2]{\lbrace}{\rbrace}{#1\,\delimsize\vert\,#2}
\newcommand{\naturalNumbers}{\mathbb{N}}
\newcommand{\integers}{\mathbb{Z}}
\newcommand{\rationalNumbers}{\mathbb{Q}}
\newcommand{\realNumbers}{\mathbb{R}}
\newcommand{\complexNumbers}{\mathbb{C}}
\newcommand{\field}{\mathbb{F}}
\newcommand{\func}[2]{{#1}\parens*{#2}}
\newcommand{\argmax}{\mathop{\textrm{arg~max}}}
\newcommand{\argmin}{\mathop{\textrm{arg~min}}}
% 集合論
\newcommand{\range}[2]{\braces*{#1,\dotsc,#2}}
\providecommand{\complement}{}\renewcommand{\complement}{\mathrm{c}}
\newcommand{\ind}[2]{\mathbbm{1}_{#1}\parens*{#2}}
\newcommand{\indII}[1]{\mathbbm{1}\braces*{#1}}
% 数論
\newcommand{\abs}[1]{\verts*{#1}}
\newcommand{\combi}[2]{{_{#1}\mathrm{C}_{#2}}}
\newcommand{\perm}[2]{{_{#1}\mathrm{P}_{#2}}}
\newcommand{\GaloisField}[1]{\mathrm{GF}\parens*{#1}}
% 解析学
\newcommand{\NapierE}{\mathrm{e}}
\newcommand{\sgn}[1]{\operatorname{sgn}\parens*{#1}}
\newcommand{\cl}[1]{\operatorname{cl}#1}
\newcommand{\Img}[1]{\operatorname{Img}\parens*{#1}}
\newcommand{\dom}[1]{\operatorname{dom}\parens*{#1}}
\newcommand{\norm}[1]{\Verts*{#1}}
\newcommand{\floor}[1]{\left\lfloor#1\right\rfloor}
\newcommand{\ceil}[1]{\left\lceil#1\right\rceil}
\newcommand{\expo}[1]{\exp\parens*{#1}}
\newcommand{\sinc}{\mathop{\textrm{sinc}}}
\newcommand{\GammaFunc}[1]{\Gamma\parens*{#1}}
\newcommand{\erf}{\mathop{\mathrm{erf}}}
% 逆三角関数
\newcommand{\asin}[1]{\operatorname{Sin}^{-1}{#1}}
\newcommand{\acos}[1]{\operatorname{Cos}^{-1}{#1}}
\newcommand{\atan}[1]{\operatorname{{Tan}^{-1}}{#1}}
\newcommand{\atanEx}[2]{\atan{\parens*{#1,#2}}}
% 畳み込み
\newcommand{\cycConv}[2]{{#1}\underset{\text{cyc}}{*}{#2}}
% 微分
\newcommand{\deriv}[3]{\frac{\operatorname{d}^{#3}#1}{\operatorname{d}{#2}^{#3}}}
\newcommand{\derivLong}[3]{\frac{\operatorname{d}^{#3}}{\operatorname{d}{#2}^{#3}}#1}
\newcommand{\partDeriv}[3]{\frac{\operatorname{\partial}^{#3}#1}{\operatorname{\partial}{#2}^{#3}}}
\newcommand{\partDerivLong}[3]{\frac{\operatorname{\partial}^{#3}}{\operatorname{\partial}{#2}^{#3}}#1}
\newcommand{\partDerivIIHetero}[3]{\frac{\operatorname{\partial}^2#1}{\partial#2\operatorname{\partial}#3}}
\newcommand{\partDerivIIHeteroLong}[3]{{\frac{\operatorname{\partial}^2}{\partial#2\operatorname{\partial}#3}#1}}
% 積分
\newcommand{\integrate}[5]{\int_{#1}^{#2}{#3}{\mathrm{d}^{#4}}#5}
\newcommand{\LebInteg}[4]{\int_{#1} {#2} {#3}\parens*{\mathrm{d}#4}}
% 複素解析
\newcommand{\conj}[1]{\overline{#1}}
\providecommand{\Re}{}\renewcommand{\Re}[1]{{\operatorname{Re}{\parens*{#1}}}}
\providecommand{\Im}{}\renewcommand{\Im}[1]{{\operatorname{Im}{\parens*{#1}}}}
\newcommand{\Arg}[1]{\operatorname{Arg}{\parens*{#1}}}
\newcommand{\Log}[1]{\operatorname{Log}{#1}}
% ラプラス変換
\newcommand{\LPLC}[1]{\operatorname{\mathcal{L}}\parens*{#1}}
\newcommand{\ILPLC}[1]{\operatorname{\mathcal{L}}^{-1}\parens*{#1}}
% 離散Fourier変換
\newcommand{\DFT}[1]{\mathrm{DFT}\parens*{#1}}
% Z変換
\newcommand{\ZTrans}[1]{\operatorname{\mathcal{Z}}\parens*{#1}}
\newcommand{\IZTrans}[1]{\operatorname{\mathcal{Z}}^{-1}\parens*{#1}}
% 線形代数
\newcommand{\bm}[1]{{\boldsymbol{#1}}}
\newcommand{\matEntry}[3]{#1\bracks*{#2}\bracks*{#3}}
\newcommand{\matPart}[5]{\matEntry{#1}{#2:#3}{#4:#5}}
\newcommand{\diag}[1]{\operatorname{diag}\parens*{#1}}
\newcommand{\tr}[1]{\operatorname{tr}{\parens*{#1}}}
\newcommand{\inprod}[2]{\left\langle#1,#2\right\rangle}
\newcommand{\HadamardProd}{\odot}
\newcommand{\HadamardDiv}{\oslash}
\newcommand{\Span}[1]{\operatorname{span}\bracks*{#1}}
\newcommand{\Ker}[1]{\operatorname{Ker}\parens*{#1}}
\newcommand{\rank}[1]{\operatorname{rank}\parens*{#1}}
% ベクトル
% 単位ベクトル
\newcommand{\vix}{\bm{i}_x}
\newcommand{\viy}{\bm{i}_y}
\newcommand{\viz}{\bm{i}_z}
% 確率論
\newcommand{\PDF}[2]{\operatorname{PDF}\bracks*{#1,\;#2}}
\newcommand{\Ber}[1]{\operatorname{Ber}\parens*{#1}}
\newcommand{\Beta}[2]{\operatorname{Beta}\parens*{#1,#2}}
\newcommand{\ExpDist}[1]{\operatorname{ExpDist}\parens*{#1}}
\newcommand{\ErlangDist}[2]{\operatorname{ErlangDist}\parens*{#1,#2}}
\newcommand{\PoissonDist}[1]{\operatorname{PoissonDist}\parens*{#1}}
\newcommand{\GammaDist}[2]{\operatorname{Gamma}\parens*{#1,#2}}
\newcommand{\cind}[2]{\ind{#1\left| #2\right.}} %条件付き指示関数
\providecommand{\Pr}{}\renewcommand{\Pr}[1]{\operatorname{Pr}\parens*{#1}}
\newcommand{\cPr}[2]{\operatorname{Pr}\cPrParens{#1}{#2}}
\newcommand{\E}[2]{\operatorname{E}_{#1}\bracks*{#2}}
\newcommand{\cE}[3]{\E{#1}{\left.#2\right|#3}}
\newcommand{\Var}[2]{\operatorname{Var}_{#1}\bracks*{#2}}
\newcommand{\Cov}[2]{\operatorname{Cov}\bracks*{#1,#2}}
\newcommand{\CovMat}[1]{\operatorname{Cov}\bracks*{#1}}
% グラフ理論
\newcommand{\neighborhood}{\mathcal{N}}
% プログラミング
\newcommand{\plpl}{\mathrel{++}}
\newcommand{\pleq}{\mathrel{+}=}
\newcommand{\asteq}{\mathrel{*}=}
\]
本記事の内容は下記の資料にも記した。
Release v0.11.0 · motchy869/Signal-Processing-Memorandum (github.com)
「Noble Identity」
主張
Noble Identity については下記の Web ページで解説されている。
https://www.dsprelated.com/freebooks/sasp/Multirate_Noble_Identities.html
次の図は上記 Web ページからの引用したものである。
Fig 1. Multi-rate Noble Identities
導出
\[
\newcommand\SH{\mathrm{S}_H}
\newcommand\StH{\mathrm{S}_\tilde{H}}
\newcommand\xLone{x_{\mathrm{L},1}}
\newcommand\xRone{x_\mathrm{R,1}}
\newcommand\yL{y_\mathrm{L}}
\newcommand\yR{y_\mathrm{R}}
\]
アップ・サンプリングの場合
Fig 1 の下段に着目する。z 変換が $H:\complexNumbers\to\complexNumbers$ で与えられるシステム $\SH$ のインパルス応答を $h:\integers\to\complexNumbers$ とする。$\SH$ は因果的なシステムであるとする$\parens{\forall n<0,\;h(n)=0}$。
z 変換が $\tilde{H}:z\mapsto H(z^N)$ で与えられるシステム $\StH$ のインパルス応答を $\tilde{h}:\integers\to\complexNumbers$ とすると、 z 変換の定義から次式が成り立つ。
\[
\tilde{h}(n) = \begin{cases}
h(n/N) & (N\mid n) \\
0 & (N\nmid n)
\end{cases}
\]
図の左側のシステムに於いて、入力を $x:\integers\to\complexNumbers$、$\SH$ の出力を $\xLone:\integers\to\complexNumbers$、最終出力を $\yL:\integers\to\complexNumbers$ とすると次式が成り立つ。
\[
\begin{align*}
\xLone(n) &= (h*x)(n) = \sum_{m=0}^\infty h(m)x(n-m) \\
\yL(n) &= \begin{cases}
\xLone(n/N) & (N\mid n) \\
0 & (N\nmid n)
\end{cases} \\
&= \begin{cases}
\sum_{m=0}^\infty h(m)x(n/N-m) & (N\mid n) \\
0 & (N\nmid n)
\end{cases}
\end{align*}
\]
図の右側のシステムに於いて、$\uparrow N$ の出力を $\xRone$、最終出力を $\yR$ とすると次式が成り立つ。
\[
\begin{align*}
\xRone(n) &= \begin{cases}
x(n/N) & (N\mid n) \\
0 & (N\nmid n)
\end{cases} \\
\yR(n) &= (\tilde{h}*\xRone)(n) = \sum_{m=0}^\infty \tilde{h}(m)\xRone(n-m) \\
&= \sum_{l=0}^\infty \tilde{h}(lN)\xRone(n-lN) = \sum_{l=0}^\infty h(l)\xRone(n-lN) \\
&= \begin{cases}
\sum_{l=0}^\infty h(l)x(n/N-l) & (N\mid n) \\
0 & (N\nmid n)
\end{cases}
\end{align*}
\]
$\yL$ と $\yR$ は一致する。
$\square$
ダウン・サンプリングの場合
Fig 1 の上段に着目する。断りの無い限り、「アップ・サンプリングの場合」で定義した記号の意味を引き継ぐ。図の左側のシステムに於いて、入力を $x:\integers\to\complexNumbers$、$\downarrow N$ の出力を $\xLone:\integers\to\complexNumbers$、最終出力を $\yL:\integers\to\complexNumbers$ とすると次式が成り立つ。
\[
\begin{align*}
\xLone(n) &= x(nN) \\
\yL(n) &= \sum_{m=0}^\infty h(m)\xLone(n-m) = \sum_{m=0}^\infty h(m)x((n-m)N)
\end{align*}
\]
図の右側のシステムに於いて、$\StH$ の出力を $\xRone$、最終出力を $\yR$ とすると次式が成り立つ。
\[
\begin{align*}
\xRone(n) &= \sum_{m=0}^\infty \tilde{h}(m)x(n-m) = \sum_{l=0}^\infty h(lN)x(n-lN) \\
\yR(n) &= \xRone(nN) = \sum_{l=0}^\infty h(lN)x((n-l)N)
\end{align*}
\]
$\yL$ と $\yR$ は一致する。
$\square$
投稿者: motchy
An embedded software and FPGA engineer for measuring instrument.
motchy のすべての投稿を表示