abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×

včera 00:33 | Zajímavý článek

Správce nástroje curl Daniel Stenberg na GitHubu průběžně vytváří svou novou knihu Uncurled, v níž shrnuje své dlouhodobé zkušenosti s údržbou open-source projektu: od odpozorovaných pouček po vtipné a ne až tak vtipné příklady e-mailů od uživatelů.

Fluttershy, yay! | Komentářů: 8
včera 00:22 | Nová verze

Byla vydána nová major verze 25.0 programovacího jazyka Erlang (Wikipedie) a související platformy OTP (Open Telecom Platform, Wikipedie). Přehled novinek v příspěvku na blogu.

Ladislav Hagara | Komentářů: 3
včera 00:11 | Nová verze

Deno (Wikipedie), běhové prostředí (runtime) pro JavaScript a TypeScript, bylo vydáno ve verzi 1.22. Přehled novinek v poznámkách k vydání.

Ladislav Hagara | Komentářů: 0
18.5. 18:22 | Nová verze

Společnost Red Hat oznámila vydání Red Hat Enterprise Linuxu (RHEL) 9.0. Vedle nových vlastností a oprav chyb přináší také aktualizaci ovladačů a předběžné ukázky budoucích technologií. Podrobnosti v poznámkách k vydání.

Ladislav Hagara | Komentářů: 7
18.5. 14:00 | Komunita

Lars Knoll oznámil, že po 25 letech v ekosystému Qt, z toho 22 let pracující pro různé společnosti vlastnící Qt, odchází ze společnosti The Qt Company do malého norského startupu.

Ladislav Hagara | Komentářů: 7
18.5. 13:22 | Zajímavý projekt

Na Kickstarteru běží kampaň na podporu mini ITX desky Turing Pi 2 Cluster Computer. Vložením 4 výpočetních modulů, podporovány jsou Raspberry Pi 4, Turing RK1 a Nvidia Jetson, lze získat 4uzlový cluster. Cena desky je 219 dolarů.

Ladislav Hagara | Komentářů: 2
18.5. 10:00 | Pozvánky

Spolek OpenAlt zve příznivce otevřených řešení a přístupu na 198. brněnský sraz, který proběhne v pátek 20. května tradičně od 18 hodin v Pivovarské restauraci Moravia.

Ladislav Hagara | Komentářů: 2
18.5. 07:00 | Zajímavý software

Byla vydána nová verze 0.25 herního enginu Fyrox, původně rg3d. Přehled novinek s kódy, náhledy i videi v příspěvku na blogu.

Ladislav Hagara | Komentářů: 1
18.5. 00:11 | Nová verze

Multiplatformní audio přehrávač Qmmp (Wikipedie) byl vydán ve verzi 2.1.0. Z novinek lze zmínit například podporu XDG Base Directory Specification.

Ladislav Hagara | Komentářů: 0
17.5. 23:22 | Komunita

Letošní konference LibreOffice proběhne 28. září až 1. října v Bolzanu. The Document Foundation hledá přednášející.

Zdeněk Crhonek | Komentářů: 0
Na sociálních sítích nebo jiných webových diskuzích vystupuji pod
 (59%)
 (16%)
 (25%)
Celkem 287 hlasů
 Komentářů: 26, poslední dnes 15:03
Rozcestník


Dotaz: fast fourier v Lua

25.4. 10:33 martin
fast fourier v Lua
Přečteno: 304×
Ahoj, Potřebuji využít v jedné aplikaci FFT.
Něco jsem našel na Rosetta code.
FFT funguje ale inverzní FFT vrací něco jiného.
help needed :(
díky
complex = {__mt={} }

function complex.new(r, i)
  local new={real=r, imaginary=i or 0}
  setmetatable(new,complex.__mt)
  return new
end

function complex.__mt.__add(c1, c2)
  return complex.new(c1.real + c2.real, c1.imaginary + c2.imaginary)
end

function complex.__mt.__sub(c1, c2)
  return complex.new(c1.real - c2.real, c1.imaginary - c2.imaginary)
end

function complex.__mt.__mul(c1, c2)
  return complex.new(c1.real * c2.real - c1.imaginary * c2.imaginary,
					 c1.real * c2.imaginary + c1.imaginary * c2.real)
end

function complex.expi(i)
  return complex.new(math.cos(i),math.sin(i))
end

function complex.__mt.__tostring(c)
  return "("..c.real..","..c.imaginary..")"
end


--[[---------------------------------------------------------------------
Cooley–Tukey Fast Fourier Transformation                                -
Zdroj: https://en.wikipedia.org/wiki/Cooley-Tukey_FFT_algorithm         -
]]-----------------------------------------------------------------------

function FFT(vect)
  local n=#vect
  if n<=1 then return vect end

  local odd,even={},{}
  for i=1,n,2 do
    odd[#odd+1]=vect[i]
    even[#even+1]=vect[i+1]
  end

  FFT(even)
  FFT(odd)

  for k=1,n/2 do
    local t=even[k] * complex.expi(-2*math.pi*(k-1)/n)
    vect[k] = odd[k] + t
    vect[k+n/2] = odd[k] - t
  end
  return vect
end

--[[-----------------------------------------------------------------------
Inverse Fast Fourier Transformation                                       -
]]-------------------------------------------------------------------------

function IFFT(amplitudes)

	local N = #amplitudes
	local input = 1 / N

	local i=nil
	for i=1, N do
		amplitudes[i].imaginary = -amplitudes[i].imaginary
	end

	FFT(amplitudes)

	for i=1, N do
		amplitudes[i].imaginary = -amplitudes[i].imaginary
		amplitudes[i].real = amplitudes[i].real * input
		amplitudes[i].imaginary = amplitudes[i].imaginary * input
	end

	return amplitudes
end

function toComplex(vector)
  vect={}
  for r,i in ipairs(vector) do
    vect[r]=complex.new(i)
  end
  return vect
end

-- test
data = toComplex{1, 1, 1, 1, 0, 0, 0, 0}

print("orig:", unpack(data))
print("fft :", unpack(FFT(data)))
print("ifft:", unpack(IFFT(data)))

Řešení dotazu:


Odpovědi

Gréta avatar 25.4. 19:48 Gréta | skóre: 35 | blog: Grétin blogísek | Stockholm
Rozbalit Rozbalit vše Re: fast fourier v Lua

neumim dělat lulu :D :D :D :D ale ten tvuj lulu zdrojáček mi vrací

orig:   (1,0)   (1,0)   (1,0)   (1,0)   (0,0)   (0,0)   (0,0)   (0,0)
fft :   (4,0)   (1,-2.4142135623731)    (0,0)   (1,-0.41421356237309)   (0,0)   (1,0.41421356237309)    (0,0)   (1,2.4142135623731)
ifft:   (1,-0)  (1,-5.5511151231258e-17)        (1,2.4894981252574e-17) (1,-5.5511151231258e-17)        (5.5511151231258e-17,0) (5.5511151231258e-17,5.5511151231258e-17) (0,-2.4894981252574e-17) (5.5511151231258e-17,5.5511151231258e-17)

noa to é na mínus sedmnáctou (jako nakalkulačce hele :O ;D) sou tak děsně mrňavý čísla že je asi jako mužem považovat za nuly takže to máš asi jako dobře :D ;D

Gréta avatar 25.4. 19:49 Gréta | skóre: 35 | blog: Grétin blogísek | Stockholm
Rozbalit Rozbalit vše Re: fast fourier v Lua

joa ty mrňavý čisilka se při výpočtech berou z nepřesnosti s děláním s floatama/číslama s plovoucí desetinou tečkou hele :O ;D

25.4. 22:33 debian+ | skóre: 30 | blog: analyzy
Rozbalit Rozbalit vše Re: fast fourier v Lua
Čísla ináč zapísané. Viď: Vědecký zápis čísel.
debian.plus@protonmail.com
26.4. 02:56 .
Rozbalit Rozbalit vše Re: fast fourier v Lua
On nemluví o zápisu, ale o hodnotě, hňupe.
Řešení 2× (Gréta, debian+)
26.4. 05:44 martin
Rozbalit Rozbalit vše Re: fast fourier v Lua
Ahoj, nějak se mi tu potratil muj další příspěvek
Nebo jsem dal jen náhled a pak ho neodeslal :/
co jsem psal hned po tom.
Bylo to ve spěchu takže jsem si nevšiml že číslo končí
s e-017. Ve své slepotě jsem viděl jen -5,587543235696549
To je celé.
Díky za reakce.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267   www.czech-server.cz
© 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.