[1]:
%pylab inline
Populating the interactive namespace from numpy and matplotlib

Input estimation for shock acceleration

[2]:
Ts = 1e-7
Fs = 1/Ts
[3]:
measured_input = loadtxt("measured_input_accel.txt")*1e3
measured_output = loadtxt("measured_output_accel.txt")*1e3
time = arange(0, len(measured_input-1)*Ts, Ts)
[4]:
figure(figsize=(12,8))
plot(time*1e3, measured_input, label="measured input signal")
ylabel(r"measured charge in $pC/(kms^{-2})$", fontsize=16, color="b")
xlabel("time in ms", fontsize=16)
ax2 = gca().twinx()
ax2.plot(time*1e3, measured_output, "r", label="measured output signal")
ax2.set_ylabel(r"measured acceleration in $kms^{-2}$", fontsize=16, color="r")
title("Dynamic effects in the measured accelerometer response signal", fontsize=20);
../../_images/examples_Shock_calibration_Input_estimation_for_shock_acceleration_example_4_0.png
[5]:
sinusoidal_calib_results = loadtxt("sinusoidal_calibration_values.txt")
frequencies = sinusoidal_calib_results[:,0]
abs_values  = sinusoidal_calib_results[:,1]
unc_abs = r_[abs_values[(frequencies <= 5000)]*0.005,
             abs_values[(5001 <= frequencies) & (frequencies <= 10000)]*0.0015,
             abs_values[(10001 <= frequencies) & (frequencies <= 15000)]*0.0025,
             abs_values[(15001 <= frequencies) & (frequencies <= 20000)]*0.005]
phase_values= sinusoidal_calib_results[:,2]
unc_phase = r_[ones(len(frequencies[frequencies<=5000]))*0.25, ones(len(frequencies[frequencies>5000]))*0.5]*pi/180

[6]:
figure(figsize=(12,8))
errorbar(frequencies, abs_values, unc_abs, fmt="o")
xlabel("frequency in Hz", fontsize=16)
ylabel("amplitude in a.u.", fontsize=16, color="b")
title("Result of sinusoidal calibration", fontsize=20)
ax2 = gca().twinx()
ax2.errorbar(frequencies, phase_values, unc_phase, fmt="d", color="r")
ax2.set_ylabel("phase in rad", fontsize=16, color="r");
../../_images/examples_Shock_calibration_Input_estimation_for_shock_acceleration_example_6_0.png