Frekans vs zaman grafiğini nasıl oluşturabilirim?


9

Kimya mühendisiyim, enerji verimliliği değil, bu yüzden biraz zor.

Ben zaman veri vs genlik almak ve zaman vs frekans dönüştürmek anlamaya çalışıyorum. İlk içgüdüm, verilerimi parçalar halinde dilimlemek, her yığın üzerinde FFT yapmak ve sonra bunu çizmektir. Ne yazık ki, her dilimin süresi sıfıra yaklaştıkça, doğru frekans bilgisi elde etmek için artık yeterli bilgi yoktur (düşük frekanslar çok küçük bir dilimden daha fazlasını gerektirir). Peki ... bunu nasıl yaparım? Eminim bu birisinin zaten çözdüğü bir tür ünlü problemdir.

İşte aradığım ses dalgası (piyano notası G) ile gösterilen dönüşüm türü. Gördüğünüz gibi, bu grafik üç eksen olarak, üçüncüsü renkle temsil ediliyor.

Teşekkürler!

resim açıklamasını buraya girin

Yanıtlar:


5

Frekans çözünürlüğüne karşı zaman, iyi bilinen bir sorundur ve gerçekten bunun üstesinden gelmek için yaklaşımlar vardır. Ses sinyalleri için, yaygın olarak kullanılan tekniklerden bazıları şunlardır: parametrik yöntemler; uyarlanabilir çözünürlük (çeşitli zaman / frekans konfigürasyonları ile analiz edin ve sonuçları bir araya getirin - Wen X. ve M. Sandler, "Birden fazla fourier dönüşümü kullanan kompozit spektrogram"); aşırı tamamlanmış bazlarda dalgacıklar / ayrışmalar; ve frekans piklerinin (IFgram) tam yerini çıkarmak için faz bilgilerinin kullanılması.

Ancak, gösterdiğiniz grafikte bu tekniklerin bazılarının kullanılmadığı görülmektedir; bu yüzden aradığınız şey bu olduğundan şüpheleniyorum. Yatay eksende bir miktar "bulaşma" olduğu görülmektedir (örneğin, t = 1.2s'de) ve bu, analizin parçalar arasında yüksek bir çakışma ile yapıldığına dair kesin bir işarettir.

Gerçekten de, karelerin çakışmasına izin verirseniz yığın süresi ve saniyedeki analiz karesi sayısının birbirine bağlanması gerekmez. Dolayısıyla, 40ms uzunluğunda analiz çerçevesini kullanmak istiyorsanız, şebekenizin olması gerekmez:

çerçeve 1: t = 0..t = 40ms; çerçeve 2: t = 40ms..t = 80ms

Çok iyi olabilir:

çerçeve 1: t = 0..t = 40ms; çerçeve 2: t = 10ms..t = 50ms

Bu üst üste binme, FFT pencere boyutunu çok fazla azaltmadan daha yüksek bir zamansal çözünürlük yanılsaması verebilir. Bunun yalnızca zaman ekseninde bir olayın doğru bir şekilde bulunmasına yardımcı olabileceğini unutmayın - zaman içinde iki olayın çözülmesine yardımcı olmaz ... Tıpkı FFT boyutunun artırılması, bir frekans zirvesinin yerini belirlemeye yardımcı olabilir, ancak iki bitişik frekans tepe noktasının çözünürlüğü.


Başka bir yol gider Nasıl (ses sinyaline spektogram gelen dönüşümü)
Pete

4

Evet, birçok insan zaman-frekans analizi üzerinde çalıştı.

"Verilerimi parçalara ayır, her parça üzerinde FFT yap" yaklaşımı iyi bir fikirdir. FFT'yi gerçekleştirmeden hemen önce her bir parçaya "pencere işlevi" uygulamak, birçok yapay nesnenin önlenmesine yardımcı olur. Parçaların çakışmasına izin vermek de yardımcı olur. Bu ince ayarlardan sonra , en popüler kısa süreli Fourier dönüşümü (STFT) gibi görünen Gabor dönüşümü ile sonuçlanırsınız.

Daha önce işaret ettiğiniz gibi ve Wikipedia makalesinde belirtildiği gibi, tüm kısa süreli Fourier dönüşüm tekniklerinin bir ödünleşimi vardır:

  • zaman serisini çok kısa parçalara böldüğünüzde, tam olarak bir tonun ne zaman başladığı ve durduğuna dair çok hassas zaman bilgileri alırsınız , ancak frekans bilgileri çok bulanıktır.
  • Zaman serisini çok uzun parçalara böldüğünüzde, bir tonun kesin frekansı hakkında oldukça hassas frekans bilgileri alırsınız, ancak tam olarak başladığı ve durduğu zaman bulanık olur.

Bu ünlü bir problem, ama ne yazık ki, sadece çözülmedi, aynı zamanda ikisi arasındaki belirsizliğin kaçınılmaz olduğu kanıtlandı - Gabor sınırı, Heisenberg-Gabor sınırı, belirsizlik ilkesi , vb.

Ben olsaydım, Gabor dönüşümünü hesaplamak için birçok hazır kütüphaneden biriyle başlardım ve zaman serisini çeşitli uzunluklarda kesmeyi denerdim. Şanslı olmanız için oldukça iyi bir şans var ve yeterli zaman yerelleştirmesi ve yeterli frekans ayrımcılığı sağlayan bir uzunlukla sonuçlanacaksınız .

Bu uygulama için işe yaramazsa, zaman-frekans gösterimi ve zaman-frekans analizi - dalgacık dönüşümleri, chirplet dönüşümleri , kesirli Fourier dönüşümü (FRFT) vb.

EDIT: Ses verilerinden spektrogram / şelale grafikleri oluşturmak için bazı kaynak kodu :

Görüntü Spektrogram yukarıdaki yardımcı programlardan ters yönde gider.


Gabor dönüşümü sadece Gauss pencereleriyle yapılır. Başka bir pencere kullanırsanız, bu sadece bir STFT'dir. (Ve gerçek Gauss pencereleri dijital olarak mevcut değildir, çünkü sonsuzluğa doğru daralırlar.)
endolith

@endolith: Haklısın. Gabor dönüşümü, sonlu uzunluğa kesilmiş bir "Gauss pencere fonksiyonu" kullanır - ideal bir Gaussian'a oldukça yakın, ancak matematiksel olarak aynı değildir.
David Cary

Bence Gabor dönüşümü bir integral kullanarak sürekli bir dönüşüm, yani pencere olarak kesilmemiş bir Gauss'a sahip olabilir mi?
endolit

@endolith: Evet, prensip olarak, bir kişi kesilmemiş Gauss'u pencere olarak kullanabilir. Pratikte, neredeyse Gauss'un tüm enerjisi merkez kamburun birkaç sigma içinde olduğu için, kesik bir pencere kullanmak, çıktı grafiğinde neredeyse her zaman algılanabilir bir fark yaratmaz. Spektrogram şelale grafikleri üreten yazılım tekrar tekrar Gauss penceresini uyguladığından ve grafiğin her sütunu için bir FFT uyguladığından, "kesilmemesi" bu yazılımı dayanılmaz derecede yavaşlatacaktır.
David Cary
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.