#c #vector #fft
Вопрос:
Я работаю над обработкой wav-файлов на основе FFT. Я разработал/скопировал функции для чтения wav и обработки fft. Проблема в том , что моя функция чтения wav возвращает a vector
, и мне нужен FFT complexlt;doublegt;[N]
, и я не могу понять, как подключиться vectorlt;doublegt;
или vectorlt;complexlt;doublegt;gt;
к complexlt;doublegt;[N]
чему . Как я могу преобразовать свои данные? Прошу прощения за мою тупость, это мой первый вопрос по SO.
void FFT(Complex f[], Complex ftilde[], int log2N); vectorlt;doublegt; amplitudes; WavReader("../Projects/Project4/input.wav", amplitudes); size_t size = amplitudes.size(); const int new_size = resize(size); // Finding nearest number power of 2 int log2N = log2(new_size); using Complex = complexlt;doublegt;; amplitudes.resize(new_size); std::vectorlt;doublegt; imag{ 0.0 }; imag.resize(new_size); vectorlt;complexlt;doublegt;gt; cvec(amplitudes.size()); transform(amplitudes.begin(), amplitudes.end(), imag.begin(), cvec.begin(), [](double da, double db) { return complexlt;doublegt;(da, db); }); Complex f[N]; // The input of FFT
Комментарии:
1. каков прототип функций, которые вам нужно вызвать, которые требуют
complexlt;doublegt;[N]
?2. void FFT(Комплекс f[], Комплекс ftilde[], int log2N);
Ответ №1:
Воспользуйся FFT(cvec.data(), ???, log2N)
. data()
Функция вернет указатель на начало (смежных) данных вектора. Просто будь в этом уверен log2N lt;= cvec.size()
.