Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.205.114.205] |
|
Страницы: (2) [1] 2 все ( Перейти к последнему сообщению ) |
Сообщ.
#1
,
|
|
|
Здравствуйте!
Для разложение амплитуд колебаний звука на частоты используется БПФ (ДПФ). На вход БПФ подаются комплексные числе, действительная часть которых содержит амплитуды, а мнимая равна 0. На выходе БПФ получается другая последовательность комплексных чисел, какой физический смысл несут его действительная и мнимая часть? |
Сообщ.
#2
,
|
|
|
...мнимая часть — амплитуда синусной (квадратурной) компоненты исходного сигнала, действительная - амплитуда косинусной. Физический смысл имеет рассмотрение двух квадратур сразу, где корень квадратный сумм квадратов амплитуд квадратур дает амплитуду (модуль) i-й гармоники, а отношение дает фазу (сдвиг фазы исходного сигнала).
|
Сообщ.
#3
,
|
|
|
Хорошо, видимо речь идет о и .
А как тогда достать частотные составляющие? |
Сообщ.
#4
,
|
|
|
Так вот как раз амплитуда i-й гармоники (соответствующий отсчет в дискретном ПФ) и говорит о вкладе определенной частотной составляющей в исходный сигнал. Например, для чистой синусоиды будет один большой пик на её частоте (в реальных условиях пик будет уширен и с некоторыми боковыми сателлитами из-за ограниченности диапазона)
|
Сообщ.
#5
,
|
|
|
Цитата MBo @ и говорит о вкладе определенной частотной составляющей в исходный сигнал А как определить фактическое значение этой частоты? |
Сообщ.
#6
,
|
|
|
Цитата ExkaliBur @ На выходе БПФ получается другая последовательность комплексных чисел, какой физический смысл несут его действительная и мнимая часть? Никакой. Просто мы можем сделать такое преобразование исходя из математики, а не физики. Любой вектор, к примеру вектор скорости, можно представить суммой двух других. Вот какой в них физический смысл? Никакого! Цитата ExkaliBur @ А как тогда достать частотные составляющие? По определению. Это и есть коэффициенты преобразования Фурье. Добавлено Цитата ExkaliBur @ Цитата MBo @ и говорит о вкладе определенной частотной составляющей в исходный сигнал А как определить фактическое значение этой частоты? Не определить, а измерить. Как измерить? Это зависит от методики. Можно построить аппроксимацию по 3 точкам и найти пик параболы, он будет смещён. |
Сообщ.
#7
,
|
|
|
Т.е. если я на вход ПФ подаю последовательность амплитуд из 4-х элементов {x1,x2,x3,x4}.
То на выходе получу последовательность комплексных чисел {X1,X2,X3,X4}, где X1 = Re1+Im1, X2=Re2+Im2, X3=Re3+Im3, X4=Re4+Im4; и амплитуда первой частоты будет равна А1 = корень квадратный из (Re1*Re1 + Im1*Im1), а чему будет равна сама первая частота ν = ? |
Сообщ.
#8
,
|
|
|
F[i] = i*f/N [исправил, 2Pi лишнее было]
где f - частота дискретизации исходного сигнала (например, 44100 Гц), N - размер буфера для Фурье (например, 1024) Для данного примера нулевой отсчет - постоянная составляющая, первый - 43 Гц, последний (512-й) - 22050 Гц |
Сообщ.
#9
,
|
|
|
Цитата ExkaliBur @ и амплитуда первой частоты будет равна А1 = корень квадратный из (Re1*Re1 + Im1*Im1), а чему будет равна сама первая частота ν = ? Зависит от того, как вы храните коэффициенты и от того как у вас организовано преобразование Фурье. Обычно вначале хранят коэффициенты при положительных частотах, потом отрицательных частотах Фурье f [единицы]. +0, +1, +2, .. , +(N/2-1), -(N/2), -(N/2-1), -(N/2-2), ... , -1 -(N/2) равен +(N/2) Встречаются варианты с поменянными левой и правой половиной. А также с одной положительной Частоты Фурье в зависимости от частоты дискретизации. f:=f*(fd/N); [Гц] Где fd- частота дискретизации к примеру 8000 Гц. |
Сообщ.
#10
,
|
|
|
Pavia, я предпочитаю думать что выбор той или иной расстановки элементов проблема программиста, который реализует ПФ, а не использует. Хотя с другой стороны данное замечание может быть критично, спасибо.
Итого, заключение Имеется звуковой WAV (PCM) файл с одним каналом и частотой дискретизации 44100 глубиной 16 бит. Окно для преобразования фурье 1024. Считываем из файла 1024 элемента int16 по 16 бит и преобразовываем их в дробные для последующей записи в действительную часть комплексного числа. На вход ПФ подается набор 1024 комплексных чисел. На выходе получается набор X из 1024 комплексных чисел, в котором первый элемент: - X1 = Re1 + i*Im1 - v1 = 2 * Pi * 1 * 44100 / 1024 = 270,59 Гц // Цитата MBo @ F[i] = 2*Pi*i*f/N - A1 = sqrt( sqr(Re1) + sqr(Im1) ) // амплитуда для частоты 270,59 Гц аналогично для остальных 1023 элементов. Все правильно? |
Сообщ.
#11
,
|
|
|
>Все правильно?
Видимо, ты успел прочитать мой пост до исправления. См. исправление и дополнение. >аналогично для остальных 1023 элементов. В результате значимы 512 отсчетов, остальные - зеркальное отражение (т.к. исходный сигнал чисто реальный) |
Сообщ.
#12
,
|
|
|
Цитата MBo @ >аналогично для остальных 1023 элементов. В результате значимы 512 отсчетов, остальные - зеркальное отражение (т.к. исходный сигнал чисто реальный) Т.е. значимые первые 512 элементов, с индексами от 0 до 511. Так? |
Сообщ.
#13
,
|
|
|
Да
|
Сообщ.
#14
,
|
|
|
Вообще-то значимы 513 элементов. Просто в 0-м и 512-м значима только половина, поскольку они оба вещественны.
|
Сообщ.
#15
,
|
|
|
Pavia, я предпочитаю думать что выбор той или иной расстановки элементов проблема программиста, который реализует ПФ, а не использует. Хотя с другой стороны данное замечание может быть критично, спасибо.
Итого, заключение Имеется звуковой WAV (PCM) файл с одним каналом и частотой дискретизации 44100 глубиной 16 бит. Окно для преобразования фурье 1024. Считываем из файла 1024 элемента int16 по 16 бит и преобразовываем их в дробные для последующей записи в действительную часть комплексного числа. На вход ПФ подается набор 1024 комплексных чисел. На выходе получается набор X из 1024 комплексных чисел, в котором первый элемент: - X1 = Re1 + i*Im1 - v1 = 1 * 44100 / 1024 = 43 Гц - A1 = sqrt( sqr(Re1) + sqr(Im1) ) // амплитуда для частоты 43 Гц аналогично для следующих 511 элементов. Все правильно? |