Time + Acceleration Fourier transform into Amplitude + Frequency

조회 수: 11 (최근 30일)
Jan
Jan 2022년 9월 30일
답변: Star Strider 2022년 9월 30일
I am trying to transform measured data from time and accelerations into amplitude and frequency, but I really dont understand the process. I have this:
g=9.81
A = importdata('220927_1.txt')
A = A.data
% Front Left sprung mass
B = [A(:,1),A(:,3).*g]
N = pow2(nextpow2(length(B)));
y = fft(B,N);
plot(1:N,abs(y))
Time = B(:,1); % Time (s)
Acceleration = B(:,2); % Acceleration (m/s^2)
n = length(Acceleration);
Ts = Time(n)-Time(1); % Sample Time
Fs = 1/Ts; % Sampling Frequency
NFFT = 2^nextpow2(n); % Next power of 2 from length of data
Y = fft(Acceleration,NFFT)/n;
f = Fs/2*linspace(0,1,NFFT/2+1);
plot(f,abs(Y))
xlabel('Frequency (Hz)')
ylabel('Amplitude (m)')
I copied the script for Fourier transform from another support but I dont know how to fix it for my application.
Additionally I was recommended to reduce the noise which I didnt search yet, but its not neccessary to answer that here.
I attached the measurement file. For sprung mass (vehicle body) there should be natural frequency somewhere around 1 to 2 Hz, so there should be peak value in ploted result. (for unsprung its around 10 Hz)

채택된 답변

Star Strider
Star Strider 2022년 9월 30일
The ‘Time’ values are not unique (they likely need an additional digit of precision) so they had to be processed by taking the mean of the unique values for both variables. The rest of the code needed a bit of tweaking to get it to work correctly. The signal has broadband noise, so a frequency-selective filter will not remove much of it. I experimented by filtering it with the sgolayfilt function since you mentioned filtering, however filtering may not be necessary if yoiu are only interested in the spectral qualities of the signal.
Try something like this —
Uz = unzip('https://www.mathworks.com/matlabcentral/answers/uploaded_files/1141115/220927_1.zip');
T1 = readtable(Uz{1}, 'VariableNamingRule','preserve')
T1 = 104550×15 table
Time Vehicle Speed FL Sprung acceleration FR Sprung acceleration RL Sprung acceleration RR Sprung acceleration FL Unsprung acceleration FR Unsprung acceleration RL Unsprung acceleration RR Unsprung acceleration Bellow pressure RL Bellow pressure RR Acceleration X Acceleration Y Acceleration Z _____ _____________ ______________________ ______________________ ______________________ ______________________ ________________________ ________________________ ________________________ ________________________ __________________ __________________ ______________ ______________ ______________ 0 0 -0.089 -0.034 -0.034 0.126 1.156 0.755 0.736 1.528 2.341 2.275 -0.594 -0.183 -1.857 0 0 -0.089 -0.035 -0.036 0.129 1.137 0.753 0.749 1.543 2.338 2.275 -0.595 -0.185 -1.857 0 0 -0.089 -0.037 -0.037 0.13 1.148 0.76 0.762 1.555 2.337 2.271 -0.596 -0.185 -1.857 0.001 0 -0.091 -0.039 -0.038 0.132 1.139 0.747 0.792 1.569 2.344 2.264 -0.597 -0.186 -1.858 0.001 0 -0.091 -0.04 -0.037 0.133 1.145 0.754 0.78 1.567 2.334 2.27 -0.596 -0.182 -1.856 0.001 0 -0.092 -0.043 -0.032 0.135 1.138 0.743 0.781 1.534 2.344 2.271 -0.595 -0.183 -1.858 0.001 0 -0.092 -0.043 -0.029 0.133 1.147 0.752 0.783 1.542 2.345 2.269 -0.595 -0.181 -1.857 0.001 0 -0.094 -0.046 -0.024 0.132 1.136 0.762 0.784 1.531 2.335 2.272 -0.594 -0.184 -1.86 0.002 0 -0.095 -0.047 -0.021 0.13 1.126 0.775 0.771 1.526 2.334 2.267 -0.595 -0.181 -1.857 0.002 0 -0.095 -0.047 -0.017 0.131 1.119 0.807 0.76 1.552 2.329 2.269 -0.595 -0.181 -1.856 0.002 0 -0.096 -0.048 -0.011 0.129 1.118 0.799 0.761 1.559 2.348 2.275 -0.593 -0.179 -1.853 0.002 0 -0.094 -0.05 -0.008 0.128 1.127 0.803 0.78 1.54 2.337 2.266 -0.597 -0.178 -1.856 0.002 0 -0.095 -0.05 -0.007 0.128 1.092 0.786 0.75 1.566 2.336 2.272 -0.597 -0.176 -1.856 0.003 0 -0.094 -0.049 -0.006 0.126 1.098 0.772 0.739 1.549 2.336 2.276 -0.597 -0.175 -1.856 0.003 0 -0.095 -0.049 -0.003 0.128 1.111 0.777 0.713 1.555 2.332 2.274 -0.597 -0.174 -1.855 0.003 0 -0.095 -0.049 -0.004 0.126 1.082 0.792 0.678 1.562 2.337 2.272 -0.597 -0.172 -1.856
g=9.81;
t = T1{:,1};
FLSA = T1{:,3}*g;
[Ut,~,ix] = unique(t, 'stable');
C = accumarray(ix, (1:numel(t)), [], @(x){mean([t(x),FLSA(x)])}); % Aggregate Repeated 'Time' Values
M = cell2mat(C);
ta = M(:,1);
FLSAa = M(:,2);
Ts = mean(diff(ta));
Fs = 1/Ts
Fs = 1.0000e+03
% Tssd = std(diff(ta))
figure
plot(t,FLSA)
grid
xlabel('t')
ylabel('FLSA')
title('Original')
figure
plot(ta,FLSAa)
grid
xlabel('t')
ylabel('FLSA')
title('Aggregated')
FLSAa_filt = sgolayfilt(FLSAa, 3, 51); % Optional
figure
plot(ta,FLSAa_filt)
grid
xlabel('t')
ylabel('FLSA')
title('Aggregated & Filtered')
Time = ta; % Time (s)
Acceleration = FLSAa_filt; % Acceleration (m/s^2)
n = numel(Acceleration);
Ts = Time(n)-Time(1); % Sample Time
Fs = 1/Ts; % Sampling Frequency
NFFT = 2^nextpow2(n); % Next power of 2 from length of data
Y = fft(Acceleration-mean(Acceleration),NFFT)/n;
f = Fs/2*linspace(0,1,NFFT/2+1);
Iv = 1:numel(f);
figure
plot(f,abs(Y(Iv))*2)
grid
xlim([0 0.005])
xlabel('Frequency (Hz)')
ylabel('Amplitude (m)')
Experiment to get the desired result.
.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Spectral Measurements에 대해 자세히 알아보기

제품

Community Treasure Hunt

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

Start Hunting!

Translated by