Chcę porównać dwa sygnały lub krzywe.
Niestety mają różne częstotliwości próbkowania. Pierwsza próbkowana jest przy 30 Hz, druga przy 2000 Hz. Matlab ma funkcję „resample” i pomyślałem, że znacznie ułatwi to porównywanie.
Moje pytanie brzmi: czy mądrzej jest próbkować w dół drugą krzywą, czy próbkować w górę pierwszej?
Edycja: Zrobiłem, jak mi kazano. Na zdjęciu po lewej stronie są oryginalne krzywe. Krzywe po prawej stronie są ponownie próbkowane. Próbka w prawym górnym rogu jest próbkowana w górę, próbka w prawym dolnym rogu jest próbkowana w dół.
Wiem, że krzywe mają różną długość po ponownym próbkowaniu. Jednak drugi sygnał zostanie przycięty do długości pierwszych sygnałów.
resampling
NelsonOrange
źródło
źródło
Odpowiedzi:
W skrócie:
Więc jeśli porównać dane z różnymi szybkościami, a w fazie oceny, gdy próbuje się określić, jak porównanie powinno być zrobione (które funkcje są w porównaniu z tym, co metryczny, z których externals, jak precyzyjnie, sprawnie, solidności, etc), bardzo podstawowym pierwszym podejściem byłoby podniesienie próby obu sygnałów o liczbę całkowitą w celu uzgodnienia ich próbkowania . Tutaj jest całkiem OK, 6000 Hz może działać dla obu.
Powodem może być praktyka DSP:
Gdy poświęcisz temu trochę czasu, jesteś bardziej gotowy, aby zacząć od nowa i zdecydować, czy powinieneś próbować, czy nie, jaką metodą itp. Osiągnąć bezpieczeństwo i wydajność .
Aby zapewnić alternatywy, jeśli zdecydujesz się porównać dane w domenie Fouriera, możesz łatwo rzucić dwa sygnały o różnej długości i częstotliwości próbkowania na tę samą liczbę współczynników Fouriera, pomagając w porównaniu w dziedzinie częstotliwości.
źródło
Jeśli używasz funkcji takiej jak wykres (x, y), najłatwiejszym sposobem wyświetlenia ich na tym samym wykresie jest po prostu nie ponowne próbkowanie żadnego z nich, ale po prostu wypełnienie każdego wektora x odpowiednimi wartościami dla każdego sygnału, więc oba pojawiają się w miejscu chcesz na wyświetlaczu.
Możesz również skonfigurować wykres tak, aby miał dwie różne osie x (po jednej dla każdej krzywej) z różnymi etykietami i legendami, jeśli chcesz.
Teraz o ponownym próbkowaniu. Użyję Fs jako częstotliwości próbkowania.
Próbkowany sygnał nie może zawierać składników częstotliwości powyżej Fs / 2. Jest ograniczony.
Również sygnał, który zawiera tylko składowe częstotliwości aż do częstotliwości F, może być dokładnie reprezentowany przy częstotliwości próbkowania 2F.
Pamiętaj, że ta „dokładna” reprezentacja jest matematyczna, a nie wizualna. Aby uzyskać dobrą reprezentację wizualną, posiadanie 5-10 próbek na okres (a więc żadnych znaczących składników częstotliwości powyżej Fs / 10 lub więcej) naprawdę pomaga mózgowi połączyć kropki. Zobacz ten rysunek: ten sam sygnał, niższa krzywa ma niższą częstotliwość próbkowania, nie ma utraty informacji, ponieważ częstotliwość jest niższa niż Fs / 2, ale nadal wygląda jak bzdura.
Jest to jednak dokładnie ten sam sygnał. Jeśli nadpróbkujesz (rekonstruujesz) ten na dole za pomocą filtra cynkowego, dostaniesz ten na górze.
Decimacja (próbkowanie w dół) spowoduje zawrócenie wszystkich składników częstotliwości wyższych niż nowy Fs / 2 do sygnału. Dlatego zwykle umieszczamy stromy filtr dolnoprzepustowy przed decymatorem. Na przykład, aby próbkować w dół od Fs = 2000 Hz do Fs = 30 Hz, najpierw zastosowalibyśmy dolnoprzepustowy wyższego rzędu z odcięciem nieco poniżej 15 Hz, a dopiero potem dziesiętnie.
Jednak ten filtr wprowadza przejściowe problemy z reakcją, będzie miał opóźnienie fazowe przy określonych częstotliwościach i może zmienić aspekt wizualny twojego sygnału, czego nie chcesz robić, jeśli chodzi o wizualne porównanie. Obowiązuje powyższa zasada, nie próbuj za dużo, zawsze utrzymuj Fs jako 5-10x najwyższą częstotliwość zainteresowania, jeśli chcesz, aby kształt sygnału coś znaczył. Dlatego zakres 200 MHz musi próbkować przy 1-2 Gsps.
Jak powiedziano powyżej, najmądrzej jest w ogóle nie zadzierać z danymi i po prostu prezentować każdemu z nich własną oś x na tym samym wykresie.
W niektórych przypadkach wymagana byłaby konwersja częstotliwości próbkowania. Na przykład, aby zmniejszyć liczbę punktów, zmniejszyć zużycie pamięci, przyspieszyć ... lub sprawić, by oba sygnały używały tych samych współrzędnych „x” do wykonywania na nich obliczeń.
W tym przypadku można również użyć pośredniego Fs, próbkować w dół sygnał z wysokimi Fs i próbkować w górę ten z niskimi Fs. Lub po prostu zmniejsz próbkę tego z wysokim Fs.
Uważaj na kryteria Nyquista i nie wybieraj zbyt niskiej częstotliwości próbkowania, w przeciwnym razie stracisz wierność kształtu fali przy wysokim sygnale Fs, dostaniesz przesunięcia fazowe z powodu filtra dolnoprzepustowego itp. Lub jeśli znasz zawartość wysokiej częstotliwości jest nieistotny, możesz dokonać świadomego wyboru. ja
Jeśli użyjesz interpolacji liniowej do dopasowania współrzędnych „x”, pamiętaj, że potrzebuje ona również dość wysokich Fs. Interpolacja działałaby na górnym sygnale na wykresie powyżej, nie działałaby na tym na dole. To samo, jeśli interesują Cię min, max i tym podobne.
I ... zauważ, że nadpróbkowanie / próbkowanie w górę będzie również bałagan z reakcją przejściową, przynajmniej wizualnie. Na przykład, jeśli przeskanujesz krok, usłyszysz dużo dzwonienia z powodu odpowiedzi impulsowej filtra cynkowego. Wynika to z tego, że otrzymujesz sygnał o ograniczonym paśmie, a ładny krok z kwadratowymi narożnikami ma nieskończoną przepustowość.
Jako przykład wezmę kwadratową falę. Pomyśl o oryginalnym próbkowanym sygnale: 0 0 0 1 1 1 0 0 0 1 1 1 ... Twój mózg widzi falę kwadratową.
Ale rzeczywistość jest taka, że powinieneś obrazować każdą próbkę jako kropkę, a między kropkami nie ma nic. To cały sens próbkowania. Między próbkami nie ma nic. Więc kiedy ta fala prostokątna została przesadzona za pomocą interpolacji sinc ... wygląda to śmiesznie.
Jest to po prostu wizualna reprezentacja ograniczonej fali kwadratowej. Wiggles trochę istnieje ... a może nie. Nie ma sposobu, aby dowiedzieć się, czy były one w oryginalnym sygnale, czy nie. W takim przypadku rozwiązaniem byłoby uzyskanie oryginalnej fali prostokątnej z wyższą częstotliwością próbkowania, aby uzyskać lepszą rozdzielczość na krawędzi, idealnie, aby uzyskać kilka próbek na krawędzi, aby nie wyglądała już na krok nieskończonej przepustowości. Wtedy, gdy nadpróbkowanie takiego sygnału, wynik nie będzie miał artefaktów wizualnych.
Tak czy siak. Jak widać ... po prostu zadzieraj z osiami x. To o wiele prostsze.
źródło
Próbkowanie w dół traci informacje. Próbkowanie w górę jest bezstratne, gdy czynnik jest liczbą całkowitą (biorąc pod uwagę, że pamiętasz również czynnik), ale niektóre informacje są tracone, gdy czynnik nie jest liczbą całkowitą. Próbkowanie w górę mogłoby teoretycznie utracić więcej informacji niż próbkowanie w dół, w przypadku bardzo specyficznych czynników ponownego próbkowania.
Którego powinieneś użyć? To zależy od wymaganego poziomu pewności.
Jeśli nie potrzebujesz pewności matematycznej i potrzebujesz tylko heurystyki, próbkowanie w dół jest szybsze, a próbkowanie w górę jest dokładniejsze .
Jeśli chcesz ograniczyć dokładność obliczeń: jest to możliwe, ale nie mogę ci w tym pomóc.
źródło
Zależy to od tego, co rozumiesz przez „porównaj” i „mądrzej”. Mądrą rzeczą, która nie jest trudna w Matlabie, jest zrobienie tego w obie strony i samodzielne podjęcie decyzji.
Właściwie, jeśli zmienisz swoje pytanie wynikami z obu podejść, głosowałbym za twoim pytaniem, a więcej osób uznałoby je za interesujące i najprawdopodobniej pomogłoby w znalezieniu „porównania”
źródło
Chciałbym zwrócić uwagę na problem występujący podczas wykonywania próbkowania, który może być kluczowy w tej operacji. Gdy sygnał jest próbkowany w górę, a punkty końcowe danych są dalekie od wartości zerowych, następuje efekt zbocza . W praktycznych doświadczeniach ten niepożądany efekt należy wyeliminować. Udostępniam tej społeczności krótki esej ze zdjęciami i kodem, który napisałem na ten temat, który może pomóc w zrozumieniu.
https://medium.com/@davidpinyol91/edge-effects-when-resampling-a-signal-on-matlab-how-to-solve-it-cc6458ab1306
źródło