İvmeölçer hareketlerini yorumlamak için FFT kullanabilir miyim?


10

İvmeölçer verilerine bakarken ortaya çıkan iki farklı hareketi tespit etmeye ihtiyacım var. İşte tükendiğinde (yapabildiğim kadar kısa):

Diyelim ki bir iPhone yüzü yukarı bakarken ileri geri salınıyor. Kullanıcı herhangi bir süre için bir salınım (bir kez ileri veya geri, bir hareket) veya sürekli bir salınım (iki hareket) yapabilir.

Şu anda kodum, son 50 kareden cihazın ivmeölçer verilerinin (y ekseni) bir listesini tutar. Bu verilerin her karesi bir FFT algoritması (bu http://goo.gl/yi3mn ) aracılığıyla konur ve sonra verilen frekans alanını yorumlamaya çalışırım. Salınımların hızı ile frekans alanının orta ila düşük aralığının gücü arasında güçlü bir ilişki olduğunu fark ettim.

Sorun, sadece bitmiş salınımın tekil mi yoksa ters yönde başka bir salınımla devam eden mi olduğunu (hareketin ekranda bir şeyi canlandırdığı gibi) gerçek zamanlı olarak tespit etmem gerekiyor. Burada ivmeölçerlerin baskı plakaları ile çalıştığını belirtmeliyim. Bir salınım durduğunda, giriş verileri, salınımın yapıldığı zamandaki zıt değeri gösterir. Bu, tek bir ileri hareket ile çift ileri ve geri hareket (her ilk salınımın sonunda) arasında belirgin bir fark görmeyi zorlaştırır.

Herkes, yukarıda açıklanan hareketler arasındaki farkı anlatmak için kullanabileceğim doğru bir büyüklük değerini (veya yararlı başka bir şeyi) deşifre etmek için bir FFT'yi nasıl kullanabileceğimi önerebilir mi?

Kullandığım verileri metin dosyalarına kaydettim. İvmeölçer girişinin y ekseni boyunca ham veridir (g-kuvvet değerleri).

http://pastebin.ca/2108123 , 2 tekil salınım için verileri gösterir (cihazı başlangıçta, sonunda ve iki salınım arasında sabit tutarım).

resim açıklamasını buraya girin

NOT: 20 salınım içeren yeni ham veriler yüklenmiş, ancak henüz çizilmemiştir. http://pastebin.ca/2108387 20 sürekli salınım için veri gösterir (cihazı başlangıçta ve sonunda tutarım).

resim açıklamasını buraya girin


Verileri kendim görmedim, ilk izlenimim bunun bir FFT için iyi bir uygulama olmadığı görünüyor. Ham biçimde veya çizim olarak gönderebileceğiniz bazı yakalanmış verileriniz var mı?
Jason R

Merhaba, geri bildiriminiz için teşekkürler. Her değeri kronolojik olarak ',' sınırlayıcıyla gösteren bir dosya kabul edilebilir mi? Saniyede yaklaşık 60 değer alıyorum. Bunun da iyi bir uygulama olmayabileceğinden şüpheleniyorum. Belki de bazı verilerle çalışabiliriz.
rykardo

2
Ham verileri gönderirseniz, büyük olasılıkla birisi onu bir arsaya dönüştürebilir ve yayınınızı onunla düzenleyebilir.
Jason R

Tamam harika. Birazdan yükleyecek.
rykardo

Bu beklediğimden daha uzun sürdü. Projeyi yalnızca 60 kare / saniye hızında cihazdan giriş verilerini alabilen Unity ile çalıştırıyorum. Bu, yüksek bir numune oranına sahip olamayacağım anlamına gelir, ancak yine de. Önerinizle kastettiğiniz bu mu?
rykardo

Yanıtlar:


2

Verilere bakarak neden bu amaçla FFT kullanmak istediğinizi göremiyorum (yine de yanlış olabilirim). Diyelim ki, bu veri kümesine (eklediğiniz) dayalı olarak tek veya birden çok hareketi tespit etmek istediğinizi,

  1. Mutlak değerlerin değişim hızı çizgilerindeki bir şey. İlk türev güzel olurdu sanırım.
  2. Dalgacık dönüşümü belki? Zirvelerin konumunu bilmek isteyip istemediğinizi öğrenene kadar faydası hakkında daha fazla ayrıntı veremem.

Tespit etmek istediğiniz tek şey tek vs çoklu salınım ise, o zaman FFT, bence, analiz için çok iyi bir seçim değildir.


Geri dönüşünüz için teşekkür ederiz! Bir arkadaşım FFT'nin daha önce hiç kullanmadığım bir yol olabileceğini söyledi. Tespit etmem gereken şey, her bir salınımın sonunda yeni bir salınım başlayıp başlamaması. Yukarıdaki grafikler neden zor olduğunu ortaya koymalıdır. Bir büyüklük algoritması kullanabileceğimi düşündüm, ancak bu zor çünkü salınımların gücü / hızı kullanıcı başına farklı olacak.
rykardo
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.