<强> 1。实验数据需求强>
为了对采集的压力实验数据做特征工程,需要对信号进行时域的统计特征提取,包含了均值,均方根,偏度、峭度、波形因子,波峰因子,脉冲因子,峭度因子等,现用python对其进行实现。
<强> 2. python实现强>
其中的输入参数含义:
①数据:实验数据的DataFrame
②p1:所截取实验信号的起始采样点位置
③p2:所截取实验信号的终止采样点位置
从熊猫进口系列 导入数学 pstf_list=[] def psfeatureTime(数据,p1, p2): #均值 数据(p1, p2) .mean df_mean=() #方差 数据(p1, p2) .var df_var=() #标准差 df_std=数据(p1, p2) . std () #均方根 df_rms=math.sqrt(战俘(df_mean 2) +战俘(df_std 2)) #偏度 数据(p1, p2) .skew df_skew=() #峭度 数据(p1, p2) .kurt df_kurt=() 和=0 因为我在范围(p1, p2): 和+=math.sqrt (abs(数据[我])) #波形因子 df_boxing=df_rms/(abs(数据(p1, p2)) .mean ()) #峰值因子 df_fengzhi=(max(数据(p1, p2)))/df_rms #脉冲因子 df_maichong=(max(数据(p1, p2)))/(abs(数据(p1, p2)) .mean ()) #裕度因子 df_yudu=(max(数据(p1, p2)))/战俘(金额/(p2-p1)), (2) featuretime_list=[df_mean df_rms、df_skew df_kurt, df_boxing, df_fengzhi, df_maichong, df_yudu] 返回featuretime_list
<强> 3 .结果与说明强>
<强>回溯算法:一种优先搜索算法(试探法),按优条件向前搜索,以达目标,当试探到某步,发现原来选择并不好(走不通),就退回重新选择。强>
回溯算法的一般步骤:1:定义问题的解空间(搜索中动态生成);2:确定易搜索的解空间结构(一般为树形结构或图);3:以深度优先的方式搜索解空间,搜索中用剪枝函数避免无效搜索。
剪枝函数:1:用约束函数在扩展节点处减去不满足约束条件的子树;2:用限界函数减去不能得到最优解的子树。
回溯法:实战
<强> 1:电话号码的字母组合强>
<强>方法:回溯(适用于组合问题)强>
类解决方案: def letterCombination(自我,数字): 电话={' 2 ' (' a ', ' b ', ' c '], “3”:[' d ', ' e ', ' f '], “4”:[' g ', ' h ', '我'], “5”(“j”、“k”、“l”), “6”:[' m ', ' n ', ' o '], “7”(“p”、“问”、“r”,“s”), “8”:[' t ', ' u ', ' v '], “9”:[' w ', ' x ', ' y ', ' z ']} res=[] #存放组合结果 def回溯(组合,next_digits): #回溯函数 #结合目前已经产生的组合,next_digits:输入的下一个字符 如果len (next_digits)==0: #递归出口 res.append(组合) 其他: 我的电话(next_digits [0]]: 回溯(组合+我,next_digits[1:]) #递归实现回溯 如果数字: 回溯(数字)#初始化 返回res
<强> 2:全排列强>
输入:[1,2,3]
输出:
(
引用>
(1、2、3),
(1、3、2),
(2,1,3),
(2、3、1],
(3、1、2),
(3,2,1)
]
类解决方案: def排列(自我,num): res=[] #存放组合结果 大?len (num) def回溯(组合,num): #结合目前已经产生的组合,num为剩下的数组 #递归出口 #递归的结束一定要有回报 如果len(组合)==大小: res.append(组合) 返回#注意 因为我在范围(len (num)): 回溯(组合+ (num[我]],num[我]+ num [i + 1:]) #递归回溯 回溯([],num) 返回res if __name__==癬_main__”: num=(1、2、3) 解决方案=解决方案() 打印(solution.permute (num)<强> 3:数字组合强>
输入:候选人=(2、3、6、7),目标=7,
所求解集为:
(
引用>
[7],
(2,2,3)
)类解决方案: def combinationArray(自我,候选人,目标): candidates.sort () res=[] #存放组合结果 大?len(候选人) def回溯(组合,cur_sum j): #结合目前已经产生的组合,cur_sum当前计算和,j用于控制求和的查找范围起的点 #递归出口 如果cur_sum>目标: 返回 如果cur_sum==目标: res.append(组合) 因为我在范围(j、大小):# j避免重复 如果cur_sum +候选人[我]在目标:#约束函数(剪) 打破 j=我 回溯(组合+[候选人[我]],cur_sum +候选人[我],j) #递归回溯 回溯([],0,0) 返回res if __name__==癬_main__”: 候选人=(2、3、6、7) 目标=7 解决方案=解决方案() print (solution.combinationArray(候选人、目标)python实现信号时域统计特征提取代码