Použití FFTW3 – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Použití FFTW3 – C / C++ – Fórum – Programujte.comPoužití FFTW3 – C / C++ – Fórum – Programujte.com

 

Toto vlákno bylo označeno za vyřešené — příspěvek s řešením.
JakubD0
Duch
7. 11. 2014   #1
-
0
-

Ahoj, snažím se napsat Matlabovskou funkci hilbert ()v C++ a narazil jsem na problém při použití fft (používám fftw3). Je to psáno i v dokumentaci, ale po vytvoření plánu a spuštění mi to vrací místo n prvků jen n/2+1, což já potřebuji n - tak jak to vrací matlabovská fce fft(). Je u knihovny FFTW3 nějaká možnost jak toho docílit?

Vstup je jedno-dimenzionální pole realných dat.

Jak to používám:

vector<double> * d = new vector<double>(data, data+size);
const int dsize = d->size();

fftw_plan p;
fftw_complex *out;

out = (fftw_complex*) fftw_malloc(sizeof(fftw_complex) * d->size());

p = fftw_plan_dft_r2c_1d(2*(dsize/2+1), &(*d)[0], out, FFTW_ESTIMATE);
fftw_execute(p);    
Nahlásit jako SPAM
IP: 46.13.92.–
vitamin+8
Grafoman
7. 11. 2014   #2
-
0
-

#1 JakubD 

Nemalo by byt vystupne pole vecsie ako vstupne?

Skus nieco taketo:

 vector<double> in(data, data+size);
 vector<fftw_complex> out((in.size()/2+1)*2, 0);


 fftw_plan p;

 p = fftw_plan_dft_r2c_1d(in.size(), in.begin(), out.begin(), FFTW_ESTIMATE);
 fftw_execute(p);   

Nahlásit jako SPAM
IP: 95.105.229.–
obfuscate: "The cruel god Malloc will strike you down. "
ZMeson: "That's the C god. C++ has a new god. "
JakubD0
Duch
8. 11. 2014   #3
-
0
-

#2 vitamin
Bohužel, žádná změna. Nejde mi teda použít iterator na begin(), musel jsem tam dát adresu prvního prvku, ale to by snad nemělo mít vliv.

Nahlásit jako SPAM
IP: 46.13.92.–
Řešení
JakubD0
Duch
8. 11. 2014   #4
-
0
-
Vyřešeno Nejlepší odpověď

#2 vitamin
Nakonec vyřešeno, data jsem převedl na komplexní a použil fftw_plan_dft_1d.

Nahlásit jako SPAM
IP: 46.13.92.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 21 hostů

Podobná vlákna

C# - pouziti += — založil aleskm

$_GLOBALS Pouziti — založil Petr

Pouziti siforvani v C++ — založil Holek

Použití tlačítka — založil Koumes21

Použití výjimek v C++ — založil Jonyzz

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý