How to average different transfer functions in order to obtain a global one?
5 次查看(过去 30 天)
显示 更早的评论
I am trying to obtain a transfer function from experimental data of different tests. The thing is that for each test I obtain different transfer functions using the System Identification Toolbox, what would be the average transfer function that best fits all the tests?
0 个评论
回答(2 个)
Star Strider
2018-2-20
Combining the transfer functions in any way is likely not a valid approach. (You have not posted your code, so I do not know how you are estimating your transfer functions.)
The tfest (link) function (in R2012a and later) allows you to specify the number of poles and zeros. I would specify the same number of each for every experiment, being sure that they are specified so that the transfer functions are always proper.
Those transfer functions will each have the same number of poles and zeros, so you can then look at the poles and zeros directly (in z-space on the unit circle or in s-space in the complex plane). If the poles and zeros appear to ‘cluster’, the best approach might then be to take the complex mean of each cluster, and use that to define a common transfer function. (You could use the kmeans function to define the clusters, if you convert the imaginary components to real values first. The coordinates of the centroid values kmeans returns may be all you need to define your poles and zeros.)
NOTE — This is entirely conjecture on my part, since I have never done anything like what you want to do. I cannot claim that there is any mathematical justification for it. I invite you to experiment to determine if it would appear to be a valid approach with your data.
2 个评论
Star Strider
2018-2-20
My pleasure.
I do not know what your data are, however an all-pole model may not be appropriate. I suspect there is at least a zero at the origin, ±Inf, or both. I would use at least a p=3, z=2 model. If you end up with pole-zero cancellations, you can resolve that later with the minreal function.
If you have only real poles or zeros (or poles or zeros with very small imaginary components, so near the origin), your system is not oscillating, and there is no reason to estimate a transfer function. The best approach is likely a nonlinear regression using a simple decaying exponential model. It is straightforward to code that using the fminsearch function if you are estimating 7 or fewer parameters. If it does demonstrate oscillations, you can estimate those parameters with the techniques in How to filter noise from time-frequency data and find natural frequency of a cantilever? (link).
Kanthaswamy Ganapathy
2021-5-6
Think of an approach where you could add all the transfer functions together resulting in a higher order model. Then perform the model order reduction using 'balred' for the order of choice as similar to the individual transfer functions. Final step plot & frequency plot should show the average transfer function lying between the boundary of all the other transfer functions.
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Transfer Function Models 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!