In an earlier post, I described a technique for modal analysis which can estimate damped modes of vibration in an object, as measured at a variable number of points on its surface. I have applied this technique to field data from an array of laser microphones, measuring waves on the surface of the water. Now I will develop the mathematics and practical considerations behind estimating the forcing function in such recordings.
Estimating the forcing function using such an analysis should be possible using the following steps:
Estimate the eigenvector matrix .
Perform a linear regression on the data using the eigenvector matrix, ie
Where is a vector of coefficients describing how the new timeseries vector maps to into the modal basis. Then, we can leverage the similarity transform to our advantage as follows:
Where is the coefficient vector of the previous values in the time series.
This expresses as a sum of and an error signal, but the result is still in modal space. To rotate back into the standard basis, we multiply by the eigenvector matrix:
Depending on the normalization of , this rotation can display the error signal in numerous ways, some more useful than others. If we normalize such that each eigenvector's last term is 1, this rotation gives the error signal as a single vector whose number of components matches that of the measured time series.
To describe the entire error time series, we must predict the homogeneous response by rotating the initial conditions by every time step:
This equation gives the error function as a time series of points whose dimensions match the measured data in the standard basis. It begs the question: what is this error function? Is it useful?
I hypothesize that this error function is a combination of sensor noise, analytical error (including those caused by precision and quantization), nonlinear responses of the medium, and the forcing function. If the distributions of these terms can be estimated, their effect could, in theory, be minimized, and we would be able to estimate the forcing function using this regression model. Nonlinearities in the medium could be locally linearized by updating the eigendecomposition at a regular frequency. However, if the update frequency were too high, the system might mistake transients for changes in the steady state, so this parameter must be adjusted to fit known qualities of the dataset.
To assess the validity of the forcing function estimation, an ideal model was constructed to simulate modal phenomena, using simple allpole filters, with white noise as a forcing function. Because the forcing function and eigenmodes are known, the algorithm's accuracy can be tested.
This process of forcing function estimation was attempted using scripts written in GNU Octave. A test script can be found here, on my github. When this is run, a new model of a resonant object is synthesized, and the estimated versus actual forcing function are compared. The model was simulated with the following parameters:
mics = 1;
order = 4;
winsize = 10000;
mscale = 0.001;
mshift = 0.999;
Where 'mscale' is the range, and 'mshift' the offset, of randomly selected eigenvalue magnitudes. The angles were randomly selected with an even distribution across the entire bandwidth.
In one example, a correlation of -0.65030 was found between estimated and ideal forcing function time series.
In addition to caluclating the correlation, the first 50 points may be plotted against one another. Here, the ideal timeseries is in blue, and the estimated is in green (and inverted to show the correlation as positive).
Furthermore, the eigenvalues may be plotted against one another. Here the ideal eigenvalues are in red, and the estimated are in blue.
Previous research has demonstrated that the algorithm's accuracy in estimating modal behavior is highly sensitive to amount of damping, number of channels, and order of the analysis. The next set of experiments will seek to find the mean absolute value correlation between measured and estimated forcing function, as a function of damping.