Funkcje trygonometryczne

To forum jest dla wszystkich pasjonatów mikrokontrolerów AVR Atmela. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
ODPOWIEDZ
Awatar użytkownika
seweryn
Użytkownik
Posty: 147
Rejestracja: 08 gru 2005, 20:04
Lokalizacja: Praszka
Kontakt:

Funkcje trygonometryczne

Post autor: seweryn » 19 gru 2005, 17:28

czy pisząc coś takiego w bascom:
zmienna=sin(liczba)
to sinus jest wyliczany podobnie jak mnożenie czy poprostu jest pobierany z tablicy wartości sinusów??Bo mam zamiar zrobić transformację fouriera i nie wiem czy ta instrukcja nie spowolni mi zbyt programu??I ile czasu jest taka instrukcja wykonywana??

Gienek
-
Posty: 32
Rejestracja: 01 sie 2003, 8:05
Lokalizacja: Tarn-Góry

Post autor: Gienek » 19 gru 2005, 19:28

Nie wiem czy ta implementacja BASICA ma funkcję SIN() bo w BASCOM-e nie programuję ale w C naperno jest po dodaniu odpowiednich bibliotek.

Awatar użytkownika
c4r0
Moderator
Posty: 2150
Rejestracja: 13 kwie 2004, 19:56
Lokalizacja: z lasu
Kontakt:

Post autor: c4r0 » 19 gru 2005, 21:08

Raczej jest wyliczana. Ale nawet jeśli nie to czarno widzę Twój pomysł. Z tego co wiem to do takich rzeczy jak FFT bascom się poprostu nie nadaje, jest za wolny i za bardzo pamięciożerny. Lepiej zrobić to w C, nawet ze względu na to, że w C napewno znajdziesz różne źródła z FFT (ja mam sprawdzone do PC w BCB jak chcesz), a w bascomie to wątpię ...

Passage
Użytkownik
Posty: 187
Rejestracja: 16 sie 2005, 22:46
Lokalizacja: Cambridge / UK
Kontakt:

Post autor: Passage » 19 gru 2005, 23:41

Po prostu sprawdź. O szybkości działania nie ma co się wypowiadać ponieważ to zależy do czego chcesz wykorzystać obliczenia, to znaczy jak szybko i jak dużo chcesz liczyć :) Co prawda ja także nie jestem zwolennikiem pisania kalkulatora w Bascomie, jednak jeśli spełniłby on moje oczekiwania, to wcale nie czułbym się gorszy od tych co zrobili to w C.
Pozdrawiam.

Kapitan_Rzbik
-
Posty: 97
Rejestracja: 20 gru 2005, 10:52

Post autor: Kapitan_Rzbik » 20 gru 2005, 11:07

funkcja sin(x) uzywana we wszelkich kompilatorach jest obliczana na podstawie analitycznej definicji funkcji sin(x):

http://pl.wikipedia.org/wiki/Sinus
http://pl.wikipedia.org/math/7/f/8/7f8b ... cf4f73.png

jak widzisz wystepuja tam silnie, potęgi i dzielenie zatem czas obliczenia sin(x) na 8-bitowym procesorze AVR jest znaczny (1000-1700 taktow zegara, zaleznie od kompilatora i uzytych bibliotek).
rozwiazaniem moze byc napisanie programu na PC generujacego potrzebne ci wartosci a w programie na AVR uzyjesz tablic z gotowymi wartościami.

pozdro

Awatar użytkownika
seweryn
Użytkownik
Posty: 147
Rejestracja: 08 gru 2005, 20:04
Lokalizacja: Praszka
Kontakt:

Re

Post autor: seweryn » 20 gru 2005, 16:55

Dzieki wszystkim za opinie i będe próbować z tą tablicą wygenerowaną na PC!

Mam jeszcze prośbę do c4r0 o te żródła o czym pisze wyżej!
smsev@poczta.onet.pl

Awatar użytkownika
c4r0
Moderator
Posty: 2150
Rejestracja: 13 kwie 2004, 19:56
Lokalizacja: z lasu
Kontakt:

Post autor: c4r0 » 20 gru 2005, 20:44

Masz w załączniku. W pliku txt funkcja fft, znalazłem ją na stronie www.codeproject.com. Ten plik exe to program który w oparciu o tą funkcję napisałem (włącz jakąś muzykę :] ), nie wiem czy będzie Ci działał bo nie sprawdzałem go nigdzie indziej niż na moim kompie.
Załączniki
pack.zip
(195.19 KiB) Pobrany 433 razy

Awatar użytkownika
seweryn
Użytkownik
Posty: 147
Rejestracja: 08 gru 2005, 20:04
Lokalizacja: Praszka
Kontakt:

Post autor: seweryn » 21 gru 2005, 19:30

no zomek program dobry!jakbyś jeszcze źródło w BCB zamieścił to idealnie by było! Ja też pisze w BCB i jak byś potrzbował pomocy w OpenGL albo RS232 to daj znać!

ODPOWIEDZ