daha iyi olan nedir: yukarı veya aşağı örnekleme?


14

İki sinyali veya eğriyi karşılaştırmak istiyorum. 30 Hz'de örneklenmiş bir eğri 2000 Hz'de bir eğri örneği

Ne yazık ki farklı örnekleme hızları var. Birincisi 30 Hz'de, ikincisi 2000 Hz'de örneklenir. Matlab 'resample' fonksiyonuna sahiptir ve bunun karşılaştırmayı çok daha kolaylaştıracağını düşündüm.

Benim sorum şu: İkinci eğriyi aşağı örneklemek ya da birincisini örneklemek akıllıca mı?

Düzenleme: Ben söylendi gibi yaptım. Soldaki resimde orijinal eğriler var. Sağdaki eğriler yeniden örneklenir. Sağ üst örneklenir, sağ alt örneklenir.

Yeniden örneklendiğinde eğrilerin farklı uzunluklarda olduğunu biliyorum. Bununla birlikte, ikinci sinyal birinci sinyal uzunluğuna kırpılır. karşılaştırma


1
Sorunu iptal ettim. Hangisinin daha akıllı olduğunu düşünüyorsun?

Çok yüksek hassasiyet önemli değil eğer çok daha hızlı işlemi yapar, özellikle eğer o zaman altörnekleyebilirsiniz (bu durumda ben değil düşünüyorum) ve çalışma adresinde zaman değer
user1306322

@Stanley Pawlukiewicz, açıkça, aşağı örnekleme ile tüm küçük zirveleri kaybediyorum. Yani yukarı örnekleme gitmek için bir yol olabilir. Sonra tekrar küçük zirvelere ihtiyacım yok. İkinci sinyali düzeltmeyi bile düşündüm. Bu yüzden benim durumumda örnekleme yapmam veya küçültmem gerçekten önemli değil.
NelsonOrange

Başka geri bildirim ve cevaplar gerekli mi?
Laurent Duval

Yanıtlar:


19

Kısacası:

  • Örnekleme : (akıllıca yapılırsa) bilgileri kaybetmez / kaybetmez, sonra daha güvenli ,
  • Aşağı örnekleme : (akıllıca yapılırsa) bilgileri kaybedebilir, ancak daha hesaplama açısından verimli olabilir .

Eğer farklı oranlarda verileri karşılaştırmak Yani eğer ve bir değerlendirme safhasında bir dener karşılaştırma yapılması gerektiğini nasıl tanımlamak ne zaman (ne metrik ile karşılaştırılır hangi özelliklerin hangi externals, verimli hassasiyet, sağlamlık, vb gibi), bir çok temel ilk yaklaşım, örneklemelerini uzlaştırmak için her iki sinyali bir tamsayı faktörü ile örneklemek olacaktır . Burada bu iyi, 6000 Hz her ikisi için de çalışabilir.

Bunun nedenleri DSP uygulaması için olabilir:

  • tamsayı yukarı örnekleme ile zor filtreleme tekniklerini kullanmak zorunda değilsiniz ve basit doğrusal enterpolasyon kolaydır. Ancak bu örneklemenin bazı bilgiler eklediğini unutmayın.
  • sinyaller aynı ölçeğe sahipse, özellikleri ayıklayabilir ve karşılaştırabilirsiniz: gürültü, değişkenlik, eğimler, türevler, vb. Doğru ölçek / ofset düzeltmesini uygulayabilirsiniz (aynı genliğe sahip değiller), doğrusal veya olmayan farklı etki alanlarında benzerlik özelliklerinin olup olmadığını kontrol etmek için doğrusal dönüşümler (Fourier vb.)
  • bu aşamada, algoritmanızı oluşturmak için gereken özellikleri / metrikleri ölçebilmeli ve ölçebilmelisiniz . Ve her iki veriden ne kaybedebileceğinizi tahmin edebilirsiniz. Örneğin, algoritmanızı oluşturabilir ve altörneklemenin sinyalinin ne kadar sağlam olduğunu ve ne kadar ileri gidebileceğinizi görebilirsiniz. Burada algoritmanız daha verimli olmaya başlar.

Bunun için biraz zaman harcadıktan sonra, tekrar sıfırdan başlamaya ve daha sonra güvenliğe ve verimliliğe ulaşmak için örnek almanız gerekip gerekmediğine, hangi yöntemle vb .

Alternatifler sağlamak için, Fourier etki alanındaki verileri karşılaştırmaya karar verirseniz, farklı uzunluk ve örnekleme oranına sahip iki sinyali aynı sayıda Fourier katsayısına kolayca yayınlayabilir, bu da frekans etki alanında bir karşılaştırmaya yardımcı olur.


14
Altörnekleme, akıllıca yapılmasa bile neredeyse her zaman bilgi kaybeder. Ancak bilgi kaybetmek akıllıca bir şey olabilir, bu yüzden ...
leftaroundabout

@ leftaroundabout Aşağı örnekleme hangi son durumlarda bilgi kaybedemez?
Willem

2
@ leftaroundabout Kabul etmiyorum. Bilgi kaybetmek her zaman saklamaktan daha kötüdür. Tek akıllıca, bilgi kaybının kendisini değil, sinyalin daha iyi temsil edilmesi için hangi bilgilerin atılacağını bilmek.
AlexTP

5
@Willem: Son derece açık bir durum olarak, bir DC sinyali tek bir örneğe aşağı örneklenebilir. Genel olarak, (yeni) Nyquist sınırının üzerinde hiçbir bileşeni olmayan herhangi bir sinyal güvenli bir şekilde altörneklenebilir.
MSalters

1
Bir DC sinyalinden 1 örnek sinyaline hiçbir bilginin kaybolmadığı iddia edilebilir, çünkü 1 örnekten orijinal ile aynı sinyale dönüştürebilirsiniz. Daha fazla bilgi sahibi olmayan bir kişiye 1 örnek sinyal verirseniz ve "Bu bir DC sinyalini temsil ediyor mu?" cevap "Bilmiyorum, bir örnekle yeterli bilgi yok" olacaktır.
Anonim Korkak

7

(X, y) grafiği gibi bir işlevi kullanırsanız, bunları aynı grafikte görüntülemenin en kolay yolu hiçbirini yeniden örneklememek değil, her x vektörünü her sinyal için uygun değerlerle doldurmaktır. ekranda istediğiniz.

İsterseniz, çizimi farklı etiketler ve göstergeler içeren iki farklı x eksenine (her eğri için bir tane) sahip olacak şekilde ayarlayabilirsiniz.

Şimdi, yeniden örnekleme hakkında. Örnekleme frekansı için Fs kullanacağım.

Örneklenmiş bir sinyal Fs / 2'nin üstünde frekans bileşenleri içeremez. Band sınırlıdır.

Ayrıca, sadece bir F frekansına kadar frekans bileşenleri içeren bir sinyal, 2F örnekleme hızında doğru bir şekilde temsil edilebilir.

Bu "doğru" sunumun görsel değil matematiksel olduğunu unutmayın. İyi bir görsel temsil için, periyot başına 5-10 numuneye sahip olmak (bu nedenle Fs / 10 ya da daha fazla önemli frekans bileşeni yoktur) beynin noktaları birleştirmesine gerçekten yardımcı olur. Bu şekle bakın: aynı sinyal, alt eğri daha düşük örnekleme hızına sahiptir, bilgi kaybı yoktur, çünkü frekans Fs / 2'den daha düşüktür, ancak yine de bok gibi görünüyor.

resim açıklamasını buraya girin

Yine de aynı sinyal. Alttaki filtreyi bir iç filtre ile fazla örneklendirirseniz (yeniden yapılandırırsanız), üstteki filtreyi alırsınız.

Decimation (altörnekleme), yeni Fs / 2'den daha yüksek tüm frekans bileşenlerini sinyale geri katlayacaktır. Bu yüzden genellikle desimatörden önce dik bir alçak geçiren filtre koyduk. Örneğin, Fs = 2000 Hz'den Fs = 30 Hz'e aşağı örneklemek için, önce 15 hz'nin biraz altında bir kesme ile yüksek dereceli bir alçakgeçirim uygulayacağız ve ancak ondan sonra.

Ancak bu filtre geçici yanıt sorunları getirecek, belirli frekanslarda faz gecikmesi olacaktır ve fikir görsel olarak karşılaştırmaksa yapmak istemediğiniz sinyalin görsel yönünü değiştirebilir. Yukarıdaki kural geçerlidir, çok fazla örnek almayın, sinyal şeklinin bir şey ifade etmesini istiyorsanız, F'leri her zaman en yüksek ilgi frekansı 5-10x olarak tutun. Bu nedenle 200MHz kapsamının 1-2 Gsps'de örneklenmesi gerekir.

Benim sorum şu: İkinci eğriyi aşağı örneklemek ya da birincisini örneklemek akıllıca mı?

Yukarıda da belirtildiği gibi, en akıllısı verileri hiç karıştırmamak ve her birini aynı grafik üzerinde kendi x ekseni ile sunmaktır.

Bazı durumlarda örnekleme oranı dönüşümü gerekebilir. Örneğin, nokta sayısını azaltmak, bellek kullanımını azaltmak, daha hızlı yapmak ... ya da her iki sinyalin de hesaplama yapmak için aynı "x" koordinatlarını kullanmasını sağlamak.

Bu durumda, bir ara Fs de kullanabilir, yüksek Fs ile sinyali aşağı örnekleyebilir ve düşük Fs ile bir örneği örnekleyebilirsiniz. Ya da sadece yüksek F'lere sahip olanı altörnekleyin.

Nyquist kriterlerine dikkat edin ve çok düşük bir örnekleme hızı seçmeyin veya yüksek Fs sinyalinde dalga şekli şekli doğruluğunu kaybedersiniz, düşük geçiş filtresi vb. Nedeniyle faz kaymaları elde edersiniz. Veya yüksek frekans içeriğini biliyorsanız ihmal edilebilir, bilinçli bir seçim yapabilirsiniz. ben

"X" koordinatlarını eşleştirmek için doğrusal enterpolasyon kullanırsanız, oldukça yüksek bir F'ye ihtiyaç duyduğunu unutmayın. İnterpolasyon yukarıdaki grafikte üst sinyalde işe yarayacak, altdakinde işe yaramayacaktır. Eğer min, max ve benzerleri ile ilgileniyorsanız aynı.

Ve ... aşırı örnekleme / yukarı örneklemenin geçici tepki ile de en azından görsel olarak karışacağını unutmayın. Örneğin, bir adımı gereğinden fazla örneklerseniz, iç filtre dürtü yanıtı nedeniyle çok sayıda zil sesi alırsınız. Bunun nedeni, sınırsız bir sinyal almanız ve kare köşeli güzel bir adımın aslında sonsuz bant genişliğine sahip olmasıdır.

Örnek olarak kare bir dalga alacağım. Orijinal örneklenmiş sinyali düşünün: 0 0 0 1 1 1 0 0 0 1 1 1 ... Beyniniz kare bir dalga görür.

Ama gerçek şu ki, her örneği bir nokta olarak hayal etmelisiniz ve noktalar arasında hiçbir şey yok. Örneklemenin bütün mesele bu. Örnekler arasında hiçbir şey yoktur. Bu kare dalga samimi bir enterpolasyon kullanılarak örneklendiğinde ... komik görünüyor.

resim açıklamasını buraya girin

Bu, sadece sınırsız bir kare dalganın görsel temsilidir. Kıpır kıpır kıpır var ... ya da olmayabilir. Orijinal sinyalde olup olmadıklarını bilmenin bir yolu yoktur. Bu durumda çözüm, kenarda daha iyi çözünürlük elde etmek için orijinal kare dalgayı daha yüksek bir örnekleme oranıyla elde etmek olurdu, ideal olarak kenarınızda birkaç örnek olmasını istersiniz, böylece artık bir infinte bant genişliği adımına sahip görünmüyor. Daha sonra böyle bir sinyalin aşırı örneğini alırken, sonuçta görsel yapaylıklar olmaz.

Neyse. Gördüğünüz gibi ... sadece x eksenleri ile uğraşın. Çok daha basit.


4

Altörnekleme bilgi kaybeder. Faktör bir tamsayı olduğunda üst örnekleme kayıpsızdır (faktörü de hatırlarsınız), ancak faktör bir tamsayı olmadığında bazı bilgiler kaybolur. Örnekleme , çok spesifik yeniden örnekleme faktörleri için teorik olarak altörneklemeden daha fazla bilgi kaybedebilir.

Hangisini kullanmalısınız? İhtiyacınız olan kesinlik seviyesine bağlıdır.

Eğer matematiksel kesinlike ihtiyacınız yoksa ve sadece sezgisel bir yöntem istiyorsanız, altörnekleme daha hızlı ve örnekleme daha doğrudur .

Hesaplamanızın doğruluğuna sınır koymanız gerekiyorsa: bu mümkün ama size bu konuda yardımcı olamam.


+1, çünkü çok önemli bir cevapta birkaç önemli bilgiyi sıkıştırmayı başardınız.
dsp_user

3

"Karşılaştır" ve "bilge" ile ne demek istediğinize bağlıdır. Matlab'da zor olmayan akıllıca şey, her iki şekilde de yapmak ve kendiniz karar vermektir.

Aslında, sorunuzu her iki yaklaşımdan elde edilen sonuçlarla değiştirdiyseniz, sorunuzu yükseltirim ve daha fazla kişi soruyu ilginç bulur ve büyük olasılıkla "karşılaştır" ı belirlemede yardımcı olur


1

Örnekleme yaparken bu işlemde çok önemli olabilecek bir soruna dikkat çekmek istiyorum. Bir sinyal yukarı örneklendiğinde ve veri uç noktaları sıfır değerlerinden uzak olduğunda, kenar efekti gerçekleşir. Pratik deneyimlerde, bu istenmeyen etki ortadan kaldırılmalıdır. Anlatmaya yardımcı olabilecek resimler ve kodlarla bu toplulukla kısa bir makale paylaşıyorum.

https://medium.com/@davidpinyol91/edge-effects-when-resampling-a-signal-on-matlab-how-to-solve-it-cc6458ab1306

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.