Ich habe den folgenden Code erstellt, um die Eigenfrequenzen einer Testprobe zu finden, die durch einen Schlaghammer angeregt wird und an der ein Beschleunigungsmesser angebracht ist. Allerdings steckte ich bei interp_accelerance_dB_first
fest. Diese Interpolation erzeugt eine Reihe von NaN-Werten und ich weiß nicht warum. Ich finde es seltsam, interp_accelerance
hat gut funktioniert. Ich hoffe, dass mir jemand helfen kann!Matlab findet natürliche Frequenz, interp1 Funktion erzeugt NaN Werte
N = 125000;
fs = 1/(x(2)-x(1));
ts = 1/fs;
f = -fs/2:fs/(N-1):fs/2;
% Set x-axis of graph
x_max = (N-1)*ts;
x_axis=0:ts:x_max;
% find the first natural frequency between these boundaries
First_lower_boundary = 15;
First_upper_boundary = 30;
Input = abs(fft(y)); %FFT input force
Output = abs(fft(o)); %FFT output acceleration
Accelerance = Output./Input;
bin_vals = [0 : N-1];
fax_Hz = bin_vals*fs/N;
N_2 = ceil(N/2);
% Interpolate accelerance function in order to be able to average all accelerance functions
Interp_accelerance = interp1(fax_Hz(1:N_2),Accelerance(1:N_2),x_axis);
% --- Find damping ratio of first natural frequency
% Determine the x-axis (from the boundries at the beginning of this script)
x_axis_first_peak = First_lower_boundary:ts:First_upper_boundary;
% Accelerance function with a logarithmic scale [dB]
Accelerance_dB_first = 20*log10(Accelerance(First_lower_boundary:First_upper_boundary));
% Interpolate the accelerance function [dB]
Interp_accelerance_dB_first = interp1(fax_Hz(First_lower_boundary:First_upper_boundary),Accelerance_dB_first,x_axis_first_peak);
Was sind die Werte von 'x' und' y'? – gariepy