Sign in

username:

password:



Not a member?

Search Online Books



Search tips

Free Online Books

Sponsor

Industry's highest performing at the lowest power DSPs now as low as $5.00*
Start development today!
*volume pricing for 10ku

Chapters

See Also

Embedded SystemsFPGAElectronics
Chapter Contents:

Search Physical Audio Signal Processing

  

Book Index | Global Index


Would you like to be notified by email when Julius Orion Smith III publishes a new entry into his blog?

  

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.$ \,$(E.10). 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 [55,147]. 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$ (E.24)

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 [325]. However, matrix notation is also clear and will be used below. Boundary conditions are taken up in §E.4.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\times 1$. 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$ (E.25)

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} (E.26)

For odd $ m$, the update in Eq.$ \,$(E.25) 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.$ \,$(E.26) 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}


Previous: State Space Formulation
Next: DW State Space Model

Order a Hardcopy of Physical Audio Signal Processing


About the Author: Julius Orion Smith III
Julius Smith's background is in electrical engineering (BS Rice 1975, PhD Stanford 1983). He is presently Professor of Music and Associate Professor (by courtesy) of Electrical Engineering at Stanford's Center for Computer Research in Music and Acoustics (CCRMA), teaching courses and pursuing research related to signal processing applied to music and audio systems. See http://ccrma.stanford.edu/~jos/ for details.


Comments


No comments yet for this page


Add a Comment
You need to login before you can post a comment (best way to prevent spam). ( Not a member? )