我并没有找到所有关于我的问题的答案,或者每个问题都只是其中的一部分。经过几天的努力,我决定发一个问题
我在做生物力学研究,包括计算踢的最大速度。每个文件中捕获了三个kick(简单地查找最大值是行不通的)。我需要找出那些踢腿的最大值。在一些帮助下,我设法用matlab/octave实现了这一点,但为了将来的工作,我决定继续使用python进行数据处理
关键是我有一个特定标记的时间,x,y,z数据,我需要计算每个注册帧的速度,并从每次踢中选取最大速度
这是一个八度的代码:
pkg load signal
txyz=importdata('295ltoe.txt',',',8); % read the text file
txyz=txyz.data; % all data in array time,x,y,z
dxyz=diff(txyz); % first differences of all columns
vxyz=dxyz(:,2:end)./dxyz(:,1)/1000; % compute velocity components
v=sqrt(sum(vxyz.^2,2)); % and the total velocity
[pks,locs]=findpeaks(v,'minpeakheight',6 )
我尝试用以下代码将其转换为熊猫:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from scipy.signal import find_peaks
data1 = pd.read_csv("B0264_dollyo_air_P_T01 rtoe.txt") #examle of txt
imported from c3d file
df = data1.diff()
dfx = (df['X'] /1000) / df['T']
dfy = (df['Y'] /1000) / df['T']
dfz = (df['Z'] /1000) / df['T']
dfx1 = dfx**2
dfy1 = dfy**2
dfz1 = dfz**2
v = (dfx1 + dfy1 + dfz1)**1/2
peaks, _ = find_peaks(v, height=6)
plt.plot(v)
plt.plot(peaks, v[peaks], "x")
plt.show()
问题是速度的值是这样的:
0 NaN
1 6.450000e-07
2 8.237500e-07
3 1.159062e-06
4 1.250312e-06
5 1.657500e-06
不是正常的正确值,它给我的值超过60。我附加的绘图,我收到与excel正确polot(excel计算是耗时的,因为不断的复制粘贴)
我的总目标是得到3个最大峰值和3个最小峰值来计算井涌执行时间,但我不知道如何获得它
要知道,如果有人愿意帮助我,我可以提供我用过的文件
目前没有回答
相关问题 更多 >
编程相关推荐