Converting acceleration to displacement

3 次查看(过去 30 天)
Hi,
I have used your code "function dataout = iomega(datain, dt, datain_type, dataout_type)" for conversion of seismic acceleration to displacement. The displacement seems dis-aligned although velocity looks alright. Can you please help.Thanks.
  5 个评论
Dr. Seis
Dr. Seis 2012-2-1
Probably should be, the other post has the code that is being referred to in the question. However, the person asking the question here is different from the one who posted the original question in the above link.
Ross Taylor
Ross Taylor 2013-3-8
Hello Elige,
I am a high school student doing a university course in Year 12. I have never used MATLAB till 4 weeks ago. I have chosen a problem and seemed to have bit more than I can handle.
I have accelerometer data which has given acceleration, velocity and the frequency for each data. The logger has recorded this every 30 seconds. Considering I have measured for a few days, I now have 40000 data points. I need this integrated to displacment. But looking at some of these codes, I do not understand how it incorporates the frequency of each wave. For example in the code written below:
function disp_time_data = acc2disp(acc_time_data,dt) % acc_time_data should be acceleration amplitudes evenly spaced in time % dt in units of seconds per sample N1 = length(acc_time_data); N = 2^nextpow2(N1); if N > N1 acc_time_data(N1+1:N) = 0; % pad array with 0's end df = 1 / (N*dt); % frequency increment Nyq = 1 / (2*dt); % Nyquist frequency acc_freq_data = fftshift(fft(acc_time_data)); disp_freq_data = zeros(size(acc_freq_data)); f = -Nyq:df:Nyq-df; % I think this is how fftshift organizes it for i = 1 : N if f(i) ~= 0 disp_freq_data(i) = acc_freq_data(i)/(2*pi*f(i)*sqrt(-1))^2; else disp_freq_data(i) = 0; end end disp_time_data = ifft(ifftshift(disp_freq_data)); disp_time_data = disp_time_data(1:N1); return
If for example, two columns of my data were the following, how can I know the above code is giving displacement values with some accuracy?
Thank you so much for looking into my problem in advance.
Velocity Frequency Acceleration X- mm/s Y-mm/s Z- mm/s X [Hz] Y [Hz] Z [Hz] X [m/s^2] Y [m/s^2] Z [m/s^2] 0.058 0.07 0.064 13.7 102.4 93.1 0.023 0.03 0.022 0.053 0.06 0.056 51.2 93.1 33 0.023 0.029 0.02

请先登录,再进行评论。

回答(1 个)

Dr. Seis
Dr. Seis 2012-2-1
You might need to filter your data. One of the results of going from acceleration to displacement is that you will boost low-frequency noise. I would suggest running a high-pass filter on this type of output from this program and see if that seems to clean things up a bit. Another thing that might help is to pad your data by adding zeros to both the beginning and end (instead of just the beginning as I do in that previous post) and then apply a taper (so that there isn't a harsh transition between the zeros and your data).

类别

Help CenterFile Exchange 中查找有关 MATLAB 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by