Forced Vibration Test Data - Damping calc from frequency response data
3 views (last 30 days)
Show older comments
Hi All,
I have a data set from a vibration test. The data set contains strain measurements taken at each 0.25 Hz of frequency range...thus I have an discrete amplitude versus frequency plot.
I would like to determine the frequencies from my data set that correspond to 0.707*max(Amplitude). Optimally I would get the closest frequency match on each side of my maximum amplitude.
The relevant portion of my code is:
[Amax,locR]=max(Strain);
Freq_R=Freq(locR);
A=(0.707*Amax);
d=Strain./A; %Ideally this calc equals 1 where the data intersect
idx=find(d >.95 & d < 1.05);
x=Freq(idx);
Freq1=Freq(ix(1));
Freq2=Freq(ix(2));
Damping=0.5*((Freq2-Freq1)/Freq_R)
My problem is that sometimes the simple method I have utilized to determine the closest point to the variable A does not always produce points on each side of the max amplitude; and sometimes it produced multiple points on each side of the max amplitude.
Is there a better routine to find only the closest point (and then index the appropriate frequency) to 0.707*Amax ? I would like to automate this process better without as I have many data sets to analyze.
Any help is much appreciated! Nick
0 Comments
Answers (1)
Matt Kindig
on 31 Jan 2012
Calculate the error between d and 1, and find the index where this error is minimized, which represents the point where Strain is closest to A. Evaluate each side of the peak separately. Something like this:
err1 = d(1:locR);
[err1, idx1] = min(abs(err1));
err2= d(locR:end);
[err2, idx2] = min(abs(err2));
Freq1 = Freq(idx1);
Freq2 = Freq(idx2);
0 Comments
See Also
Categories
Find more on Acoustics, Noise and Vibration in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!