python如何通过加速度信号算速度和位移

综合网上资料算法都未能实现,目前已有数据给定频率、采样数据,求python实例,谢谢指点
参考了 MATLAB 的代码

%频域积分
%%%%%%%%%%%%%%%%%%%%%%%%%%
clear
clc
close all hidden
%%%%%%%%%%%%%%%%%%
fni=input('频域积分-输入数据文件名:','s');
fid=fopen(fni,'r');
sf=fscanf(fid,'%f',1);%采样频率
fmin=fscanf(fid,'%f',1);%最小截止频率
fmax=fscanf(fid,'%f',1);%最大截止频率
c=fscanf(fid,'%f',1);%单位变换系数
it=fscanf(fid,'%f',1);%积分次数
sx=fscanf(fid,'%s',1);%横向坐标轴的标注
sy1=fscanf(fid,'%s',1);%纵向坐标轴输入单位的标注
sy2=fscanf(fid,'%s',1);%纵向坐标轴输出单位的标注
fno=fscanf(fid,'%s',1);%输出数据文件名
x=fscanf(fid,'%f',[1,inf]);%输入数据存成行向量
status=fclose(fid);
n=length(x);
%建立时间向量
t=0:1/sf:(n-1)/sf;
%大于并最接近n的2的幂次方为FFT长度
nfft=2^nextpow2(n);
%FFT变换
y=fft(x,nfft);
%计算频率间隔(Hz/s)
df=sf/nfft;
%计算指定频带对应频率数组的下标
ni=round(fmin/df+1);
na=round(fmax/df+1);
%计算圆频率间隔(rad/s)
dw=2*pi*df;
%建立正的离散圆频率向量
w1=0:dw:2*pi*(0.5*sf-df);
%建立负的离散圆频率向量
w2=2*pi*(0.5*sf-df):-dw:0;
%将正负圆频率向量组合成一个向量
w=[w1,w2];
%以积分次数为指数,建立圆频率变量向量
w=w.^it;
%进行积分的频域变换
a=zeros(1,nfft);
a(2:nfft-1) =y(2:nfft-1)./w(2:nfft-1);
if it == 2
%进行二次积分的相位变换
   y=-a;
else
%进行一次积分的相位变换
a1=imag(a);
a2=real(a);
y=a1-a2*i;
end
a=zeros(1,nfft);
%消除指定正频带外的频率成分
a(ni:na)=y(ni:na);
%消除指定负频带外的频率成分
a(nfft-na+1:nfft-ni+1)=y(nfft-na+1:nfft-ni+1);
%IFFT变换
y=ifft(a,nfft);
%取逆变换的实部n个元素并乘以单位变换系数为积分结果
y=real(y(1:n))*c;
%绘制几分钱的时程曲线图形
subplot(2,1,1);
plot(t,x);
xlabel(sx);
ylabel(sy1);
grid on;
%绘制积分后的时程曲线图形
subplot(2,1,2);
plot(t,y);
xlabel(sx);
ylabel(sy2);
grid on;

python相关积分

import numpy as np
from scipy import integrate
import matplotlib.pyplot as plt
plt.figure(figsize=(9,6))
x = np.linspace(-2, 2, 40)
y=5*x**2-4*x
y_int = integrate.cumtrapz(y)
plt.plot(y_int, 'ro', label=u"积分值")
plt.plot(y, 'b*-', label=u"原函数")
plt.xticks(fontproperties='STSong',fontsize=30)
plt.yticks(fontproperties='STSong',fontsize=30)
plt.xlabel('横轴:时间',fontproperties='STSong',fontsize=20)
plt.ylabel('纵轴:位移',fontproperties='STSong',fontsize=20)
plt.show()

前些日子回答过一个类似的问题,然后写了一篇博客:https://xufive.blog.csdn.net/article/details/118757361