Sprawdzanie czy wartości mają przebieg sinusoidalny

Odpowiedz Nowy wątek
2019-10-10 11:24
0

Cześć,
Jestem tu nowy, zarejestrowałem się głównie by zadać pytanie. Nie zajmuję się programowaniem ale znajomi, którzy coś wiedzą na temat programowania nie potrafili mi odpowiedzieć. Dlatego przyszedłem z prośbą o pomoc do Was.
Czy jest jakiś moduł, ustalona sekwencja lub funkcja w językach programowania, do weryfikowania czy napływające dane mają przebieg sinusoidalny? Dane będą z miernika odległości, będą więc obarczone pewnym błędem, więc ich ocena musi to "brać pod uwagę", przebieg nie będzie idealny. Okres będzie stały, amplituda może być różna.
Program miałby być napisany do sterownika przemysłowego (FBD, SCL, LAD) ale myślę, że jeżeli znajdzie się coś w innym języku, to nie będzie problemem to później przetłumaczyć.

Pozostało 580 znaków

2019-10-10 11:28
2

Współczynnik korelacji

Pozostało 580 znaków

2019-10-10 11:31
2

Takiej magicznej funkcji is_sinusoidal to raczej nie, ale jednocześnie napisanie czegoś takiego nie musi być jakoś bardzo skomplikowane. To raptem kilka linijek kodu:

  1. Weźmy max i min żeby określić amplitudę
  2. Znajdźmy sobie miejsca zerowe żeby okreslić okres (albo weźmy ten stały o którym mówisz).
  3. Policzmy sobie różnice między sinusoidą o takich parametrach a wartościami które masz, a następnie zdecydujmy czy "pasuje" czy nie.

Wbrew pozorom najtrudniejsze w tym wszystkim jest to co na końcu -> jak określić czy jest ok czy nie? Wziąć średnią różnic? Odchylenie standardowe? Medianę? Max? To już zależy od tego co chcesz traktować jako pasujący wykres a co nie.


Masz problem? Pisz na forum, nie do mnie. Nie masz problemów? Kup komputer...
edytowany 1x, ostatnio: Shalom, 2019-10-10 11:32

Pozostało 580 znaków

2019-10-10 11:55
cs
2

Masz do wyboru:
jeśli to sygnał harmoniczny (sinus o stałej częstotliwości, amplitudzie i fazie) - aproksymacja funkcją sinus i błędem średniokwadratowym oceniasz jak bardzo przypomina to sinus
jeśli to sygnał harmoniczny modulowany (sinus o stałej częstotliwości, ale zmiennej amplitudzie) - wyznaczasz widma częstotliwościowe np. przez FFT i tam wyznaczasz częstotliwość nośnej i częstotliwość modulowaną (jeśli potrzebna)

błędem średniokwadratowym oceniasz tak jak pisałem wyżej, to juz trochę zależy od oczekiwań i od przyjętej definicji "dobrej aproksymacji". - Shalom 2019-10-10 12:23

Pozostało 580 znaków

2019-10-10 13:07
0

Ok, czyli porównywanie rzeczywistych wartości do oczekiwanych. Ma to sens i jest jak najbardziej wykonalne, powinno się sprawdzić. Zwięźle i na temat. Dzięki

Pozostało 580 znaków

2019-10-10 13:16
cs
0

Jedna uwaga, bo nie do końca zrozumiałem, czy chcesz oceniać jak mierzony sygnał jest podobny do sinusa, czy chcesz wyznaczać jakieś parametry z tego sinusa (częstotliwość, amplituda itd.). Zrozumiałem, że to jest sinus, ale czasem zakłócony (więc parametry wyznaczone sinusa będą odbiegać od rzeczywistych i wtedy z błędu średniokwadratowego można wyznaczyć błąd wyznaczanych parametrów). Jeśli jednak nie ma pewności, że to sinus, albo gorzej sygnał będzie zmieniał swoją funkcję np. w zależności od jakiegoś parametru to może być gorzej bo trzeba najpierw zrobić klasyfikację jaki to sygnał a potem dobrać odpowiednią funkcję do aproksymacji.

Pozostało 580 znaków

2019-10-10 14:00
0

troche offtop ale ciekawe jakby sobie z tym siec Kohonena poradzila ?

Pozostało 580 znaków

2019-10-10 14:28
0

Poza konkursem pytanie, te odczyty z miernika odległości to będą podawane w stałych odstępach czasu?

Pozostało 580 znaków

2019-10-10 16:19
2

Szybka transformata furiera powinna pozwolić na obiektywne wykrycie przebiegu sinusoidalnego, bez znajomości częstotliwości fazy i amplitudy.


Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.

Pozostało 580 znaków

2019-10-10 16:46
0
cs napisał(a):

Jedna uwaga, bo nie do końca zrozumiałem, czy chcesz oceniać jak mierzony sygnał jest podobny do sinusa, czy chcesz wyznaczać jakieś parametry z tego sinusa (częstotliwość, amplituda itd.). Zrozumiałem, że to jest sinus, ale czasem zakłócony (więc parametry wyznaczone sinusa będą odbiegać od rzeczywistych i wtedy z błędu średniokwadratowego można wyznaczyć błąd wyznaczanych parametrów). Jeśli jednak nie ma pewności, że to sinus, albo gorzej sygnał będzie zmieniał swoją funkcję np. w zależności od jakiegoś parametru to może być gorzej bo trzeba najpierw zrobić klasyfikację jaki to sygnał a potem dobrać odpowiednią funkcję do aproksymacji.

Oceniać jak mierzony sygnał jest podobny do sinusa. Pomiar będzie realizowany w równych odstępach, sterownik z tego co wiem przekazuje 10 odczytów na sekundę.
Mierzona ma być obracająca się ze stałą prędkością rolka, funkcja ma oceniać czy rolka ma bicie. Czujniki odległości reagują na zmiany faktury i koloru, więc potrzebuje testu, który stwierdzi czy odchylenie to zabrudzenie czy bicie.

Pozostało 580 znaków

2019-10-10 16:48
0
MarekR22 napisał(a):

Szybka transformata furiera powinna pozwolić na obiektywne wykrycie przebiegu sinusoidalnego, bez znajomości częstotliwości fazy i amplitudy.

No dobra ale jak taką transformatę zaprogramować przy użyciu C?

Nie radzę pisać, skorzystaj z jakiejś gotowej biblioteki - cs 2019-10-10 16:49
Żadne tam halo, ale jak dla początkującego, ... dołączam do rady @cs - _13th_Dragon 2019-10-10 18:05

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0