Next  |  Prev  |  Up  |  Top  |  JOS Index  |  JOS Pubs  |  JOS Home  |  Search

FDTD State Space Model

Let $ \underline{x}_K(n)$ denote the FDTD state for one of the two subgrids at time $ n$, as defined by Eq. (11). The other subgrid is handled identically and will not be considered explicitly. In fact, the other subgrid can be dropped altogether to obtain a half-rate, staggered grid scheme [3,10]. However, boundary conditions and input signals will couple the subgrids, in general. To land on the same subgrid after a state update, it is necessary to advance time by two samples instead of one. The state-space model for one subgrid of the FDTD model of the ideal string may then be written as

$\displaystyle \underline{x}_K(n+2)$ $\displaystyle =$ $\displaystyle \mathbf{A}_K\, \underline{x}_K(n) + \mathbf{B}_K\, \underline{u}(n+2)$  
$\displaystyle \underline{y}(n)$ $\displaystyle =$ $\displaystyle \mathbf{C}_K\, \underline{x}_K(n).
\protect$ (25)

To avoid the issue of boundary conditions for now, we will continue working with the infinitely long string. As a result, the state vector $ \underline{x}_K(n)$ denotes a point in a space of countably infinite dimensionality. A proper treatment of this case would be in terms of operator theory [20]. However, matrix notation is also clear and will be used below. Boundary conditions are taken up in §5.3.

When there is a general input signal vector $ \underline{u}(n)$, it is necessary to augment the input matrix $ \mathbf{B}_K$ to accomodate contributions over both time steps. This is because inputs to positions $ m\pm1$ at time $ n+1$ affect position $ m$ at time $ n+2$. Henceforth, we assume $ \mathbf{B}_K$ and $ \underline{u}$ have been augmented in this way. Thus, if there are $ q$ input signals $ \underline{\upsilon}(n)\isdeftext [\upsilon _i(n)]$, $ i=1,\ldots,q$, driving the full string state through weights $ \underline{\beta}_m\isdeftext [\beta_{m,i}]$, $ m\in{\bf Z}$, the vector $ \underline{u}(n)=$ is of dimension $ 2q\times 1$:

\begin{displaymath}
\underline{u}(n+2) =
\left[\!
\begin{array}{c}
\underline{\upsilon}(n+2)\\
\underline{\upsilon}(n+1)
\end{array}\!\right]
\end{displaymath}

When there is only one physical input, as is typically assumed for plucked, struck, and bowed strings, then $ q=1$ and $ \underline{u}$ is $ 2\times1$. The matrix $ \mathbf{B}_K$ weights these inputs before they are added to the state vector for time $ n+2$, and its entries are derived in terms of the $ \beta_{m,i}$ coefficients below.

$ \mathbf{C}_K$ forms the output signal as an arbitrary linear combination of states. To obtain the usual displacement output for the subgrid, $ \mathbf{C}_K$ is the matrix formed from the identity matrix by deleting every other row, thereby retaining all displacement samples at time $ n$ and discarding all displacement samples at time $ n-1$ in the state vector $ \underline{x}_K(n)$:

\begin{displaymath}
\underbrace{\left[\!
\begin{array}{c}
\vdots \\
y_{n,m-2} \...
..._{n,m+4}\\
\vdots
\end{array}\!\right]}_{\underline{x}_K(n)}
\end{displaymath}

The state transition matrix $ \mathbf{A}_K$ may be obtained by first performing a one-step time update,

$\displaystyle y_{n+2,m} = y_{n+1,m-1}+y_{n+1,m+1}-y_{n,m}+\underline{\beta}_m^T \underline{\upsilon}(n+2),
$

and then expanding the two $ n+1$ terms in terms of the state at time $ n$:
$\displaystyle y_{n+1,m-1}$ $\displaystyle =$ $\displaystyle y_{n,m-2}+y_{n,m}-y_{n-1,m-1}+\underline{\beta}_{m-1}^T\underline{\upsilon}(n+1)$  
$\displaystyle y_{n+1,m+1}$ $\displaystyle =$ $\displaystyle y_{n,m}+y_{n,m+2}-y_{n-1,m+1}+\underline{\beta}_{m+1}^T\underline{\upsilon}(n+1)$  
    $\displaystyle \protect$ (26)

The intra-grid state update for even $ m$ is then given by
$\displaystyle {y_{n+2,m}}$
  $\displaystyle =$ $\displaystyle y_{n,m-2} - y_{n-1,m-1} + y_{n,m} - y_{n-1,m+1} + y_{n,m+2}$  
    $\displaystyle \quad +\; \underline{\beta}_m^T \underline{\upsilon}(n+2) + (\underline{\beta}_{m-1}+\underline{\beta}_{m+1})^T\underline{\upsilon}(n+1)$  
  $\displaystyle =$ \begin{displaymath}\begin{array}{c}
\left[1, -1, 1, -1, 1\right]\\
\vspace{0.5i...
...y_{n-1,m+1}\\
y_{n,m+2}\\
y_{n-1,m+3}\\
\end{array}\!\right]\end{displaymath}  
    \begin{displaymath}+ \left[\underline{\beta}_m^T \quad (\underline{\beta}_{m-1}+...
...+2)\\
\underline{\upsilon}(n+1)
\end{array}\!\right].
\protect\end{displaymath} (27)

For odd $ m$, the update in Eq. (26) is used. Thus, every other row of $ \mathbf{A}_K$, for time $ n+2$, consists of the vector $ [1,-1,1,-1,1]$ preceded and followed by zeros. Successive rows for time $ n+2$ are shifted right two places. The rows for time $ n+1$ consist of the vector $ [1,-1,1]$ aligned similarly:

\begin{displaymath}
\underbrace{\left[\!
\begin{array}{l}
\qquad\vdots\\
y_{n+1...
...+3}\\
\qquad\vdots
\end{array}\!\right]}_{\underline{x}_K(n)}
\end{displaymath}

From Eq. (27) we also see that the input matrix $ \mathbf{B}_K$ is given as defined in the following expression:

\begin{displaymath}
\underbrace{\left[\!
\begin{array}{l}
\qquad\vdots\\
y_{n+1...
...ine{\upsilon}(n+1)
\end{array}\!\right]}_{\underline{u}(n+2)}.
\end{displaymath}


Next  |  Prev  |  Up  |  Top  |  JOS Index  |  JOS Pubs  |  JOS Home  |  Search

Download wgfdtd.pdf

``On the Equivalence of the Digital Waveguide and Finite Difference Time Domain Schemes'', by Julius O. Smith III, version published at http://arXiv.org/abs/physics/0407032 (in PDF and PostScript formats only).
Copyright © 2005-12-28 by Julius O. Smith III
Center for Computer Research in Music and Acoustics (CCRMA),   Stanford University
CCRMA  [Automatic-links disclaimer]