Use of PSD functions to obtain FRFs
조회 수: 23 (최근 30일)
이전 댓글 표시
Hi,
I am doing some modal analysis on a steel structure and have encountered some troubling issues while using Matlab's Power Spectral Density functions to obtain the Frequency Response Functions of the structure.
I have obtained a force vector (in Newtons) from an impact hammer, denoted 'y', and an acceleration vector (in g's) from an accelerometer, denoted 'x'. These vectors have been trimmed to a length 'L' of 153600, equating to 30 seconds of data at a sampling rate of 5120 Hz. Having already applied my own windowing function to the data, I am using the rectwin function in Matlab. The data has been padded with zeros to a length of 'NFFT' = 262144 as per instructions in the Matlab help file.
In order to obtain the FRFs, I have used the periodogram and cpsd functions as follows:
[Pxx,f]=periodogram(x,rectwin(L),NFFT,Fs); % autospectrum of the response
[Pff,f]=periodogram(y,rectwin(L),NFFT,Fs); % autospectrum of the impact
[Pfx,f]=cpsd(y,x,rectwin(L),0,NFFT,Fs); % cross spectrum
[Pxf,f]=cpsd(x,y,rectwin(L),0,NFFT,Fs); % cross spectrum
H1=Pfx./Pff; % FRF estimate 1
H2=Pxx./Pxf; % FRF estimate 2
Coherence=H1./H2; % This is the coherence function
I have noticed two problems with these FRF estimates that do not match with the theory. Firstly, the coherence function obtained by this method is exactly equal to unity (i.e., 1.00000) across the entire frequency spectrum. This shouldn't be possible! I would expect to see the coherence values drop in the vicinity of anti-resonance. The second problem I have noticed is that the FRF estimates appear to be rotated 90 degrees in phase. This is particularly noticeable when plotting the Real vs. Imaginary portions of the FRF near resonance. Theory tells me that I should see a circle centred on the imaginary axis, however, all my plots are showing a circle centred on the real axis.
This is all very annoying because I don't know what I have done wrong.
Please advise,
Craig Cowled.
댓글 수: 0
채택된 답변
Wayne King
2011년 11월 28일
Hi Craig, one problem is that you use one window for your coherence estimate that is the entire length of your data. This will always result in a coherence estimate of unity at all frequencies.
That is not just a MATLAB issue, that is a known result. You always need more than one bivariate sample to get a meaningful coherence estimate.
If you use mscohere (or if you want to keep it doing it your way with cpsd), then you must use overlapped segments. And, with these overlapped, windowed segments, I would recommend against using a rectangular window. You can use the default Hamming, that would be fine.
추가 답변 (1개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Vibration Analysis에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!