Входное представление в БПФ для заданного списка амплитуд и частоты дискретизации - PullRequest
0 голосов
/ 17 октября 2018

Как представить использование звуковой волны (синусоида, 1000 Гц, 3 с, -3 дБFS, 44,1 кГц) в программе FFT?Входные данные для программы - это список амплитуд и частоты дискретизации.

Я имею в виду, как преобразовать звуковой файл (например, файл XYZ.wav) в качестве входных данных для FFT, где один из входных аргументов должен принимать a.файл данных, состоящий из амплитуд и других входных аргументов, должен принимать частоту дискретизации и, если необходимо,

1 Ответ

0 голосов
/ 17 октября 2018

Обычно, когда вы выполняете вызов fft, вы предоставляете одномерный массив, который представляет кривую во временной области, часто это ваша звуковая кривая, однако fft преобразует любую кривую временного ряда ... когда вы начинаете с аудиофайла,скажем, файл WAV, вы должны преобразовать двоичные данные в этот массив 1D с плавающей запятой ... если его WAV, то файл будет начинаться с 44-байтового заголовка, который детализирует такие важные атрибуты, как частота дискретизации, битовая глубина и порядковый номер ... остальныеwav-файла - это полезная нагрузка ... в зависимости от разрядности вам потребуется проанализировать набор байтов, а затем преобразовать данные из обычно 16-битных данных, которые будут занимать два байта в целое число, выполняя некоторое битовое смещение ... для выполнениячто вам необходимо знать понятие порядка байтов (big или little endian), а также обрабатывать чередование многоканального сигнала, такого как стерео ... как только вы получите сгенерированное представление массива с плавающей запятой, просто вставьте его в ваш вызов fft... для начала игнорируйте использование файла wavи просто синтезировать вашу собственную кривую греха и передать ее в вызов fft только для того, чтобы подтвердить, что известная частота приведет к тому, что эта частота, представленная в его частотной области, выйдет из вызова fft

Ответ от вызова fft(или DFT) будет одномерным массивом комплексных чисел ... есть простая формула для вычисления величины и фазы каждой частоты в этом наборе результатов FFT ... знать, что такое предел Найквиста и как сложитьмассив freq domain сверху на себя, чтобы удвоить величину, при этом используя только половину элементов этого массива домена freq ... элемент 0 этого массива домена freq - это ваше смещение постоянного тока, и каждый последующий элемент называется частотным бином, который отделен отдруг друга с помощью постоянного приращения частоты, также вычисляемого по простой формуле ... вернемся назад, если вас интересует, что это за формулы

Теперь вы можете оценить людей, которые проводят всю свою карьеру, раздвигая границы работы над алгоритмами зазанавес на этиВызовы API ... Слух Чоп хлопает вместе 30 линий API-вызовов для выполнения всего вышеперечисленного, вероятно, доступны, однако гораздо более благородно написать код для выполнения всего вышеизложенного вручную, поскольку я знаю, что это откроет новые горизонты дляПозволяет вам задавать более тонкие вопросы

Очень интересный аспект преобразования кривой во временной области в ее аналог в частотной области с помощью вызова FFT заключается в том, что вы сохранили всю информацию своего исходного сигнала ...чтобы доказать это, я настоятельно рекомендую вам сделать следующий шаг и выполнить симметричную операцию, преобразовав выходные данные вашего вызова fft обратно во временную область

звуковую кривую во временной области -> fft -> представление в домене freq -> inverse fft -> назад к исходной аудио кривой во временной области

этот цикл трансформации является мощным, так как это хороший способ позволить вам подтвердить вашу аудио кривую до частотыдомен работает

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...