---
# System prepended metadata

title: get attribute from wave (without graphing)

---

# get attribute from wave (without graphing)


<h3>attribute</h3>

<ul>
<li>max ampltude</li>
<li>average ampltude</li>
<li>max slope (four points away)</li>
<li>percentage of peaks above the peaks' average ampltude</li>
<li>standard diviation</li>
<li><b>situation</b></li>
</ul>

<h3>code</h3>

``` python=
import csv
import pandas
#from scatterPlot import *

timeSlice =5
recordRate =100

threeAxisesAccData =pandas.read_csv("_fall.xlsx - Raw Data.csv").values

attributeVectorList =[]

sumOfMagSq =0
maxAmpl =0
avg =0
maxSlope =0
latestTwentyData =[]
peakList =[]

counter =0

for singleData in threeAxisesAccData:
    mag =sum(singleData[i]*singleData[i] for i in range(1, 4))**0.5

    #sum of mag square to compute 標準差
    sumOfMagSq +=mag**2

    #maxAmpl
    if mag > maxAmpl:
        maxAmpl =mag#

    #peak: a mag greater than 10 before and 10 after can called a peak
    #would do the peak avg finally and compare numbers of peaks gtr or smlr than peak avg
    latestTwentyData.append(mag)

    if len(latestTwentyData) >= 20:
        if latestTwentyData[9] == max(latestTwentyData):
            peakList.append(mag)
        
        latestTwentyData.pop(0)

    #avg: divided by num finally
    avg +=mag#
    
    #maxSlope
    if counter > 3:
        slope =0.25*recordRate*abs(latestTwentyData[-1]-latestTwentyData[-5])
    if counter > 3 and slope > maxSlope:
        maxSlope =slope#
    
    counter +=1

    ##################### when one time slice passed #####################
    
    if counter >= timeSlice*recordRate:
        counter =0

        peakAvg =sum(peakList)/len(peakList)
        peakAboveRate =0
        
        for peak in peakList:
            if peak >= peakAvg:
                peakAboveRate +=1

        peakAboveRate /=len(peakList)#

        avg /=(timeSlice*recordRate)

        stdDiviation =sumOfMagSq/(timeSlice*recordRate)-avg**2#
        
        attributeVectorList.append((maxAmpl, avg, maxSlope, peakAboveRate, stdDiviation, "fall"))

        sumOfMagSq, maxAmpl, avg, maxSlope, latestTwentyData, peakList =0, 0, 0, 0, [], []
        
    #######################################################################
        
print(attributeVectorList)
```