Zapis Dynamic Data Type do tablicy

Jeśli masz coś do powiedzenia w sprawie LabVIEW napisz. Tutaj są tematy, których nie można uściślić do innych działów.
Paw Saw
Posty: 37
Rejestracja: 12 maja 2016 16:02
Wersja środowiska: LabVIEW 2017

Zapis Dynamic Data Type do tablicy

Post autor: Paw Saw »

Witam,

Chciałbym się poradzić w pewnej sprawie. Otóż w aplikacji, którą przygotowuję mierzone są drgania. Problem polega na tym, że czas pomiaru może być różny za każdym razem, dlatego nie mogę na sztywno ustawić odczytu N próbek z zadaną częstotliwością. Wpadłem na taki pomysł, aby sczytywać niewielką ilość próbek z dużą częstotliwością i zapisywać je do tablicy, a po zakończeniu pomiaru wykreślać całość na wykresie oraz dokonywać analizy (FFT). Niestety nie działa to tak, jak założyłem, tzn. kolejne pomiary nakładają się na siebie zamiast dopisywać na końcu. W przypadku, gdy dokonam konwersji z Dynamic Data Type na zwykły Array of Scalars wszystko ładnie sie rysuje, jednak wtedy nie mogę wykonać analizy FFT.

Z góry dziękuję za pomoc.
Pozdrawiam
Obrazek
Awatar użytkownika
koofaya
Posty: 38
Rejestracja: 23 sty 2014 14:51
Wersja środowiska: LabVIEW 2014

Zapis Dynamic Data Type do tablicy

Post autor: koofaya »

Nie wiem, dlaczego nie możesz zrobić FFT, skoro bloczek ten przyjmuje tablicę typu Double na wejściu.
Chyba że korzystasz z jakichś innych bloczków do analizy. Nie mam na tym kompie LV, ale możesz wrzucić chociaż ten fragment kodu, w którym masz Dynamic Data Type, konwersję i próbę analizy...
Paw Saw
Posty: 37
Rejestracja: 12 maja 2016 16:02
Wersja środowiska: LabVIEW 2017

Re: Zapis Dynamic Data Type do tablicy

Post autor: Paw Saw »

Może nie do końca jasno się wyraziłem. Samą analizę FFT można przeprowadzić na podstawie tablicy typu Double. Jednak gdy chcę wykreślić widmo na wykresie okazuje się, że wartości przedstawione na osi X nie odpowiadają częstotliwościom. Podejrzewam, że jest to związane ze zmianą czasu na próbki, przez co zamiast otrzymywać częstotliwość 100 Hz na wykresie zaznaczona jest częstotliwość 0,1 Hz. W takim przypadku muszę również modyfikować zakresy filtru (dzielić przez 1000), aby działał. O ile ja radzę sobie z odczytem i analizą otrzymanych wyników, to dla przyszłego użytkownika może to być bardzo mylące.

W załączniku przesyłam VI z symulacją do testów (póki co nie dodawałem tego do głównej aplikacji)
Załączniki
dynamic data.vi
(184.02 KiB) Pobrany 327 razy
Obrazek
PiDi
Posty: 641
Rejestracja: 31 gru 2010 01:36
Wersja środowiska: LabVIEW 2017
Lokalizacja: Katowice

Re: Zapis Dynamic Data Type do tablicy

Post autor: PiDi »

Nie otrzymujesz na wykresie częstotliwości 0.1 Hz, tylko częstotliwość znormalizowaną 0.1.
Skrótowo: wartość 1 oznacza częstotliwość próbkowania (f), wartość 0.5 to 0.5 f, itd. FFT zawsze działa po prostu na próbkach ("tablicy Double"), a fakt wyświetlenia częstotliwości w Hz na wykresie jest czysto kosmetycznym zabiegiem.

Polecam zacząć od podstaw cyfrowego przetwarzania sygnałów (np. z dość popularnej książki dostępnej za darmo: http://www.dspguide.com/pdfbook.htm , dodatkowo hasła do gógla: "Digital Signal Processing", "DSP", "Cyfrowe przetwarzanie sygnałów", "FFT", "Fourier Transform", itd).

Co do samego VIja, którego zamieściłeś - nie do końca rozumiem, co chcesz osiągnąć. Ale może by spróbować tak: https://decibel.ni.com/content/docs/DOC-5562 ?
ObrazekObrazekObrazekObrazek
ODPOWIEDZ