Problem z generacja funkcji.

Tematy związane z tworzeniem dużych aplikacji. Zaganiednia dotyczące architektury oraz zasad tworzenia optymalnych rozwiązań.
Saimon
Posty: 5
Rejestracja: 19 wrz 2007 00:00

Problem z generacja funkcji.

Post autor: Saimon »

Witam wszystkich, mam o to taki problem musze wygenerowac funkcje opisaną nast. rownaniem

x(t)=sinc(4800t)*(cos(1920*pi*t)/(1-1,4746*10^7*t^2))
wykres po autokorelacji powinien mieć amplitude 1 -tak jak na rysunku, natomiast mnie wychodzą jakieś dziwne rzeczy - prosiłbym kolegów o pomoc.

[img]http://saimon83.ovh.org/wykres.jpg[/img]
vugie
Posty: 383
Rejestracja: 17 lis 2006 00:00
Wersja środowiska: LabVIEW 2009
Lokalizacja: Warszawa

Re: Problem z generacja funkcji.

Post autor: vugie »

W generatorze sinusa, którego użyłeś, częstotliwość nie oznacza częstotliwości samej funkcji, tylko częstotliwość próbkowania w cyklach na próbkę (w helpie jest to napisane).
A nawet gdyby tak nie było, to i tak źle obliczasz tę częstotliwość. Wzór na sinusa o danej częstotliwości to sin(2*pi*f)

W ogóle dla każdego ze składników wzoru, który podałeś używasz innego czasu trwania próbki (dt): w sincu zależy od częstotliwości, w funkcji kwadratowej jest stały, w cos jest w ogóle z kosmosu.

Wygeneruj najpierw wektor czasu z takim próbkowaniem jakie chcesz i na tym wektorze przeprowadzaj wszystkie operacje arytmetyczne używając podstawowych funkcji matematycznych, a nie generatorów sygnałów.
Saimon
Posty: 5
Rejestracja: 19 wrz 2007 00:00

Re: Problem z generacja funkcji.

Post autor: Saimon »

Vugie -po 1 dzięki za pomoc,ale zrobiłem to chyba Twoim sposobem-wyniki niby dobre-ale wykres i tak inny-może jeszcze jakieś pomysły ?

Poprawka
Jordan
Posty: 6
Rejestracja: 18 wrz 2007 00:00
Lokalizacja: Radom

Re: Problem z generacja funkcji.

Post autor: Jordan »

Witam,
myślę, że popełniłeś sporo błędów przy łączeniu bloczków i wydaje mi się, że ostatecznie wynik różni się od tego co miało wyjść ze wzoru. Za chwilę podeślę Twój plik z komentarzami gdzie wg mnie popełniłeś błędy.
Natomiast największym błędem jaki popełniasz to dobór częstotliwości próbkowania. Przy takich parametrach powinieneś mieć przynajmniej 1920Hz (a nie 1000), ale lepiej jak masz 9600 lub więcej. Można to łatwo zauważyć patrząc na kanciaste kształty Twoich sygnałów. Ponadto na rysunkach masz domyślne wartości na osi X co utrudnia interpretację wyników.
Załączam plik, gdzie generuję ten sygnał wg wzoru zaczynając od wygenerowania wektora czasu (wg rady Vugiego i przyzwyczajenia z Matlaba). Używam XYgraph, żeby wyświetlić sobie _mój_ wektor czasu dokładnie tak jak został wygenerowany. Do Autokorelacji generuję wektor, hmmm..., opóźnienia (-t:t). Zauważ, że wartość maksymalna korelacji wypada wtedy dla t=0, co jest zgodne z teorią.
Co do wartości na wykresie: myślę, że kształt tych funkcji jest taki jak powinien, natomiast wartość funkcji dla t=0 nie wynosi 1 z różnych przyczyn. Funkcja korelacji (podobnie jak fourier) ma przed całką taki współczynnik skalujący i o ile mi wiadomo różne programy inżynierskie różnie go interpretują. Przykładowo Matlab w ogóle go nie wpisuje i trzeba samemu skalować przez 1/N, w Octave trzeba skalować przez 1/(N/2). Spotyka się jeszcze 1/sqrt(N) i inne. _Nie wiem_ jak to jest w LV (bo dopiero z nim zaczynam zabawę), ale myślę, że jest to możliwe, że wymaga jeszcze skalowania zanim się otrzyma właściwy wynik.
Vugie: mała poprawka - sin(2 * pi * f * t)
Mam nadzieję, że wszyscy rozumieją o co mnie się rozchodzi, a jak nie to proszę śmiało pytać, lub poprawiać jeśli zauważycie błędy :)
Pozdrawiam cieplutko Jordan
Jordan
Posty: 6
Rejestracja: 18 wrz 2007 00:00
Lokalizacja: Radom

Re: Problem z generacja funkcji.

Post autor: Jordan »

Witam raz jeszcze,

skomentowałem Twój pliczek. Nie jest on taki całkiem zły :wink: Wybacz może ostry jęzor i nieco mentorski ton, ale mam takie zboczenie zawodowe :lol:
Pozdrawiam
Jordan
Saimon
Posty: 5
Rejestracja: 19 wrz 2007 00:00

Re: Problem z generacja funkcji.

Post autor: Saimon »

A mógłbym prosić o te pliki w LabView 7.1 z góry dzięki :wink:
Jordan
Posty: 6
Rejestracja: 18 wrz 2007 00:00
Lokalizacja: Radom

Re: Problem z generacja funkcji.

Post autor: Jordan »

Witaj,

nie wiem czemu, ale u mnie opcja "Save for previous version" pozwala tylko na zapisanie 8.0 i 8.2, w związku z czym wrzucam obrazki schematów. Jakby ktoś wiedział jak to zapisać do wersji 7.1 to będę wdzięczny za wskazówkę.

Już po wysłaniu poprzednich postów zauważyłem, że uwaga nr 3 w prawym dolnym rogu jest błędna, więc nie ma jej na tych rysunkach poniżej.

Pozdrawiam
Jordan
ODPOWIEDZ