ฉันต้องการตรวจจับท่าทางสองแบบที่เกิดขึ้นเมื่อดูข้อมูล accelerometer นี่คือการทำงาน (สั้น ๆ เท่าที่ฉันสามารถทำได้):
ให้บอกว่า iPhone กำลังแกว่งไปมาในขณะที่หงายหน้าอยู่ ผู้ใช้สามารถทำการแกว่งหนึ่งครั้ง (ไปข้างหน้าหรือข้างหลังท่าทางหนึ่ง) หรือการแกว่งอย่างต่อเนื่องในระยะเวลาใดก็ได้ (ท่าทางที่สอง)
ปัจจุบันรหัสของฉันเก็บรักษารายการข้อมูล accelerometer (แกน y) ของอุปกรณ์จาก 50 เฟรมล่าสุด แต่ละเฟรมข้อมูลนี้ใส่ผ่านอัลกอริทึม FFT (อันนี้http://goo.gl/yi3mn ) จากนั้นฉันพยายามตีความโดเมนความถี่ที่กำหนด ฉันสังเกตุเห็นถึงความสัมพันธ์ที่แน่นแฟ้นระหว่างความเร็วของออสซิลเลชันและพลังของช่วงความถี่กลางถึงต่ำ
ปัญหาคือฉันต้องตรวจจับ (ในแบบเรียลไทม์เมื่อการเคลื่อนไหวทำให้บางสิ่งบางอย่างบนหน้าจอ) ไม่ว่าการสั่นที่เพิ่งเสร็จสิ้นนั้นจะเป็นแบบเอกพจน์หรืออย่างใดอย่างหนึ่งที่ยังคงสั่นอีกทิศทางหนึ่งในทิศทางตรงกันข้าม ที่นี่ฉันควรชี้ให้เห็นว่า accelerometers ทำงานกับแผ่นความดัน เมื่อความผันผวนหยุดข้อมูลอินพุตจะแสดงค่าตรงข้ามจากเมื่อมีการดำเนินการความผันผวน สิ่งนี้ทำให้เป็นการยากที่จะเห็นความแตกต่างที่ชัดเจนระหว่างการเคลื่อนที่ไปข้างหน้าเดี่ยวและการเคลื่อนที่ไปข้างหน้าสองครั้งจากนั้นเคลื่อนที่ไปข้างหลังถอยหลัง
ใครสามารถแนะนำวิธีที่ฉันอาจใช้ FFT เพื่อถอดรหัสค่าขนาดที่ถูกต้อง (หรือสิ่งอื่นที่มีประโยชน์) ที่ฉันสามารถใช้เพื่อบอกความแตกต่างระหว่างท่าทางที่อธิบายข้างต้น
ฉันบันทึกข้อมูลที่ฉันใช้กับไฟล์ข้อความ เป็นข้อมูลดิบ (ค่า g-force) ตามแนวแกน y ของอินพุตมาตรวัดความเร่ง
http://pastebin.ca/2108123แสดงข้อมูลสำหรับออสซิลเลชัน 2 เอกพจน์ (ฉันถืออุปกรณ์ไว้ที่จุดเริ่มต้นจุดจบและระหว่างสองออสซิลเลชัน)
หมายเหตุ: อัปโหลดข้อมูลดิบที่มีการแกว่ง 20 ครั้งแล้ว แต่ยังไม่ได้วางแผน http://pastebin.ca/2108387แสดงข้อมูลสำหรับการแกว่งอย่างต่อเนื่อง 20 ครั้ง (ฉันถืออุปกรณ์ไว้ที่จุดเริ่มต้นและสิ้นสุด)