Vibration Analysis of a gas turbine

4 Ansichten (letzte 30 Tage)
Christopher Chettri
Christopher Chettri am 8 Apr. 2019
Beantwortet: David Wilson am 9 Apr. 2019
Hi I am new to Matlab and would like to get a psd of a data
I have acquired the time series data from the accelerometer (The data has only one coloumn which is for the amplitude), The sampling frequency was 50000Hz.
I will need to firstly remove the first 30sec of the data and then apply a low pass filter for any signal above 3000Hz and then add a hanning window
I want to get
1. FFT amplitude in the x-axis and Frequency in the X-axis (Im confused as to how can i get the frequency vecctor )
2. Get a PSD with PSD amplitude on Y axis and frequency on the X-axis
Please guide me through this many thanks

Antworten (2)

Stephan
Stephan am 9 Apr. 2019
Hi,
there are some example in the documentation regarding Vibration analysis:
Also filtering is treated in examples - have a look here:
Best regards
Stephan

David Wilson
David Wilson am 9 Apr. 2019
Here's a version. You haven't said what the signal is, so I've made one up. It has two dominant frequencies, one above your cut-off, and one below. If we do this right, we'll get a singnal at the end with only one component left over.
%%
fs = 50e3; % Hz
Ts = 1/fs; % sample time
t = [0:Ts:60]'; % assume 60s of data (since we'll remove 30s)
f1 = 10e3; % We'll hopefullly drop this one
f2 = 1.5e3; % We'll hopefully keep this one
y = sin(2*pi*f1*t) + 0.4*sin(2*pi*f2*t);
plot(t,y) % total mess
The plot a total mess, but you're not that intersted in that. Now we design a filter at the specified cut-off, and then filter the original signal. I've used some functions from the signal processing toolbox.
wc = 3000; % Customer-specified cut-off, [Hz]
n = 7; % Butterworth filter order
wn = wc/fs/2;
[B,A] = butter(n,wn);
yf = filter(B,A,y); % filter it
Now we cut off the first 30 s (for whatever reason), probably to remove transients. I've done this after the filtering deliberately to remove start-up tgransients in the filter as well.
tstart = 30;
n = round(tstart/Ts);
t(1:n)=[];
y(1:n)=[]; yf(1:n)=[]; % drop fist 30 s
Now simply look at the frequency response (in the correct units). I've compared both before & after to see that we did indeed remove the top frequency.
%% Now look at the periodgram
periodogram([y, yf],hanning(length(y)),'onesided',1024,fs)
tmp.png

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by