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
Zapis Dynamic Data Type do tablicy
Zapis Dynamic Data Type do tablicy
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...
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...
Re: Zapis Dynamic Data Type do tablicy
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)
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
-
- Posty: 641
- Rejestracja: 31 gru 2010 01:36
- Wersja środowiska: LabVIEW 2017
- Lokalizacja: Katowice
Re: Zapis Dynamic Data Type do tablicy
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 ?
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 ?