Sto cercando di eseguire il codice FFTW in un file mex. Questo è strettamente per lo scopo di sviluppo e test. Dopo alcune ricerche su google, vedo che altri hanno provato a fare qualcosa di simile e hanno avuto problemi correlati, ma non ho trovato alcuna soluzione. Durante il tentativo di eseguire il file mex, Matlab mi dice:Collegamento di FFTW nel file Matlab Mex
??? Errore nell'uso ==> chirpTransform.mxCta File MEX non valido '\ removed \ my \ directory \ + chirpTransform \ mxCta.mexw32': La procedura specificata non può essere trovata .
.
Sto usando gnumex con MinGW per creare il file mex perché LCC sembra avere alcuni problemi. Ho provato a utilizzare la DLL a 32 bit dal sito FFTW (http://www.fftw.org/install/windows.html). Ho provato a utilizzare fftwf3.dll nella directory bin di Matlab 2009b. Ho costruito la DLL dal sorgente usando Msys/MinGW. In tutti i casi, i risultati sono gli stessi. In tutti i casi ho fatto quanto segue per generare il file lib.
c: \ gnumex \ mexdlltool.exe -d libfftw3f-3.def -D libfftw3f-3.dll -l libfftw3f.lib -come C: \ MinGW \ bin \ as.exe
Ho anche provato a utilizzare lo strumento visual studio lib.exe e ho sperimentato vari flag di mexdlltool.
Sembra che sia possibile chiamare direttamente funzioni nel file fftwf3-3.dll utilizzando la funzionalità di LoadLibrary di Matlab. Dal momento che la DLL sembra non essere il problema, ho provato a creare una versione statica di fftwf3 e collegandola direttamente al file mex. Ho avuto gli stessi risultati! Se rimuovo il codice FFTW, il file mex funziona correttamente. Ho appena rinunciato a questo punto, e sono stufo di trovare metodi alternativi di test.
"LCC sembra avere alcuni problemi" - cosa intendi esattamente? –
puoi pubblicare il codice del MEX che stai usando (parti rilevanti almeno)? – Amro
Matlab utilizza in realtà FFTW internamente per la sua FFT. Assicurati che la tua versione di FFTW non sia in conflitto con quella usata da Matlab o che sia collegata alla libreria Flaus di Matlab. – sfstewman