» »

Implementacija kompleksnih števil za FT

Implementacija kompleksnih števil za FT

marjan_h ::

Kako implementirati računanje z kompleksnimi števili, v nekem standardnem jeziku C/C++/Java?

Namreč želim napisati funkcijo, ki bi izračunala FT (Fourierjevo transformaicjo) v diskretni obliki. Vendar kaj naj naredim ko množim z e^(i*omega*t)?

Pa brez uporabe knjižnic.

Hvala.

bluefish ::

eko_2k4 ::

Spura ::

marjan_h je izjavil:

Kako implementirati računanje z kompleksnimi števili, v nekem standardnem jeziku C/C++/Java?

Namreč želim napisati funkcijo, ki bi izračunala FT (Fourierjevo transformaicjo) v diskretni obliki. Vendar kaj naj naredim ko množim z e^(i*omega*t)?

Pa brez uporabe knjižnic.

Hvala.
Isuse, pac nek struct z dvema doubloma nad katerim definiras operacije.

Ribič ::

marjan_h je izjavil:

Pa brez uporabe knjižnic.
Mar ni cilj knjižnic ravno to, da ti ni treba tega na novo početi?

smacker ::

Najbrž ma za vajo na kakem faksu, da pokaže razumevanje delovanja FT in ne sme knjižnice uporabit.
Da zračunaš diskretno FT, sploh ne rabiš nobenih operacij nad imaginarnimi števili.
Za vsako frekvenco v zanki primerjaš vhodni signal z sinusoido in s kosinusoido trenutne frekvence. V matematičnih izpeljavah se potem ta koeficienta povežeta z imaginarnimi števili, zgolj za to da lahko računaš z njimi in da si lahko predstaviš vrednosti kot točke v 2D grafu. V diskretnem niti ne rabiš računat, lahko čist ločeno zračunaš realne in imaginarne koeficiente, tisti i te naj ne zanima. Na koncu samo če te zanima s kako amplitudo in s kakšno fazo je prisotna določena frekvenca v signalu, moraš pa iz obeh koeficientov to zračunat - dejansko gre za pretvorbo iz kartezičnega v polarni koordinatni sistem - razdalja ti predstavlja amplitudo, kot (v radianih seveda) pa fazo.

marjan_h ::

Hvala, za linke. Bom pogledal in če mi ne bo kaj jasno bom vprašal.

AtaStrudl ::

Lahko delas loceno sin in cos (real in imag), je pa veliko bolj komot delati s kompleksnimi spremenljivkami.
GCC (in C99) jih ima vgrajene

#include [complex.h]
.....
.....
complex float a,b,c;
a=1.2+3.4I;
b=5.6+7.8I;
c=a*b;
printf("\n\nc = %f %fi\n\n",crealf(c),cimagf(c));

itd....

imas tudi cexpf(), cpowf(), csinf().....

pri include morata namesto [] biti < in > (slotech se upre)

MrStein ::

#include <complex.h>

Ja, malo čudno so naredili...
Motiti se je človeško.
Motiti se pogosto je neumno.
Vztrajati pri zmoti je... oh, pozdravljen!

Randomness ::



Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Fourierjeva vrsta, fourierjeva transformacija

Oddelek: Šola
146931 (3717) marjan_h
»

Polarni zapis kompleksnega števila

Oddelek: Šola
65461 (4772) Wolfman
»

Matematika - FMF (strani: 1 2 )

Oddelek: Šola
8710401 (8134) sherman
»

[C++] Sledenje tipkovnici

Oddelek: Programiranje
71403 (1198) TEDY
»

Neskončna majhnost

Oddelek: Znanost in tehnologija
291579 (1579) SavoKovac

Več podobnih tem