Так-ли плоха FFT-свёртка? - Страница 4 - Цифровые кроссоверы и румкоррекция - SoundEX - Клуб любителей хорошего звука Перейти к публикации

Так-ли плоха FFT-свёртка?


Рекомендованные сообщения

9 minutes ago, アントン said:

Проблемы вообще не в точности вычислений, а в оконном характере FFT преобразования. 

Еще раз - читайте оригинальную литературу, там очень доходчиво объяснено, почему там нет и не может быть (конечно, если алгоритм реализован корректно) никаких оконных артефактов, надо приложить только небольшие усилия, чтоб разобраться. Именно поэтому оно и называется линейной свёрткой в противовес циклической.

Ссылка на комментарий
Поделиться на других сайтах

  • Ответы 147
  • Создано
  • Последний ответ

Лучшие авторы в этой теме

Лучшие авторы в этой теме

Опубликованные изображения

12 минут назад, igorzep сказал:

Еще раз - читайте оригинальную литературу, там очень доходчиво объяснено, почему там нет и не может быть (конечно, если алгоритм реализован корректно) никаких оконных артефактов, надо приложить только небольшие усилия, чтоб разобраться. Именно поэтому оно и называется линейной свёрткой в противовес циклической.

Давайте по порядку. 

1. Окна есть?

2. Наложение окон есть?

3. "условно" достоверные осчёты являются абсолютно достоверными в середине блока на удалении более длины ядра FIR - данное утверждение нуждается в серьёзном доказательстве.

Ссылка на комментарий
Поделиться на других сайтах

47 минут назад, アントン сказал:

Как выглядит разница? Интегральные 0.002% ни о чём не говорят.

На 3 странице есть картинка как выглядит разница. И про интегральность я ничего не говорил. Я поделил максимальную амплитуду ошибки на среднюю амплитуду оригинального сигнала.

Ссылка на комментарий
Поделиться на других сайтах

2 minutes ago, アントン said:

1. Окна есть?

Совсем не те, о которых ведёте речь вы.

 

2. Наложение окон есть?

В Overlap&Save - нет. В Overlap&Add есть, но со 100% точной суммой (на сколько позволяет разрядность железа).

 

3. "условно" достоверные осчёты являются абсолютно достоверными в середине блока на удалении более длины ядра FIR - данное утверждение нуждается в серьёзном доказательстве.

FIR - по определению FINITE impulse response, соответственно его действие распространяется только на участок соответствующей ширины ПО ОПРЕДЕЛЕНИЮ. Участок в середине - для него эквивалентен непрерывному, так как там нет "разрыва" / свёртывания в цикл. Это как раз более чем ОЧЕВИДНО даже на пальцах. (посчитайте, хотя бы, для циклического STR).

Ссылка на комментарий
Поделиться на других сайтах

7 минут назад, igorzep сказал:

Совсем не те, о которых ведёте речь вы.

Да ладно. А как вы без окон будете делать FFT?

8 минут назад, igorzep сказал:

В Overlap&Add есть, но со 100% точной суммой (на сколько позволяет разрядность железа).

Так это банальный алгоритм оконного перекрытия.

8 минут назад, igorzep сказал:

FIR - по определению FINITE impulse response, соответственно его действие распространяется только на участок соответствующей ширины ПО ОПРЕДЕЛЕНИЮ. Участок в середине - для него эквивалентен непрерывному, так как там нет "разрыва" / свёртывания в цикл. Это как раз более чем ОЧЕВИДНО даже на пальцах. (посчитайте, хотя бы, для циклического STR).

Ну, возможно,  я с вами тут соглашусь. Но хотелось бы точного доказательства.

Ссылка на комментарий
Поделиться на других сайтах

2 minutes ago, アントン said:

Ну, возможно,  я с вами тут соглашусь. Но хотелось бы точного доказательства.

Формальные доказательства (выведение формул) присутствует на страницах Википедии.

"На пальцах" в картинках - тут https://pdfs.semanticscholar.org/presentation/6197/38ee171d1966471f4e739d166296e7080bc6.pdf

Ссылка на комментарий
Поделиться на других сайтах

@igorzep итак про утверждение, что Участок в середине - для него эквивалентен непрерывному.

Опровергается элементарно. Расчёт FFT оперирует всем окном.

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

Ссылка на комментарий
Поделиться на других сайтах

Есть ли какие то критерии выбора именно окна Кайзера?

Ссылка на комментарий
Поделиться на других сайтах

2 minutes ago, アントン said:

@igorzep итак про утверждение, что Участок в середине - для него эквивалентен непрерывному.

Опровергается элементарно. Расчёт FFT оперирует всем окном.

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

Редкостный бред вида набор бессмысленных слов!

О том, что цикличная FFT _свёртка_ (свёртка, не преобразование FFT в одну сторону!) эквивалентна цикличной STR свёртка мы, кажется, уже договорились. Если нет, предлагаю посетить университетские курсы матана, где вас научат это доказывать.

Поэтому, вычёркиваем/забываем FFT и заменяем на STR multiply-add последовательность (определение, собственно, свёртки), и убеждаемся в бредовости разницы FFT и STR и для линейной свёртки.

А то так всё можно аргументировать "потому что розовые слоны бороздят просторы большого театра".

Ссылка на комментарий
Поделиться на других сайтах

8 minutes ago, sewerin said:

Есть ли какие то критерии выбора именно окна Кайзера?

Никакие окна Кайзера, как и никакие другие окна (кроме прямоугольного, т.е. паддинг нулями) - не используется в линеаризации свёртки.

Ссылка на комментарий
Поделиться на других сайтах

14 часов назад, igorzep сказал:

Редкостный бред вида набор бессмысленных слов!

Ваш уровень понятен - в игнор. Учитесь общаться по-человечески.

Ссылка на комментарий
Поделиться на других сайтах

17 минут назад, sewerin сказал:

Есть ли какие то критерии выбора именно окна Кайзера?

Хэмминг применяется. 

Ссылка на комментарий
Поделиться на других сайтах

 

Файл выложить можете? www.aes.org/e-lib/browse.cfm?elib=6252

Ссылка на комментарий
Поделиться на других сайтах

В общем, почитал про overlap-add и overlap-save методы, вспомнил матан.

Всё достаточно корректно должно работать, но я очень сомневаюсь, что на краях расчитываемых через FFT-IFFT кусочков свёртки, хватит 32 бита fpu. Потому как 32

0.002% - это 16 бит всего.

@chebum если есть возможность выложите файл разницу прямой и FFT свёртки.

Ссылка на комментарий
Поделиться на других сайтах

1 hour ago, アントン said:

Всё достаточно корректно должно работать, но я очень сомневаюсь, что на краях расчитываемых через FFT-IFFT кусочков свёртки, хватит 32 бита fpu. Потому как 0.002% - это 16 бит всего.

Ну во первых - сравнивался не пиковый RMS с RMS ошибки, а RMS записи с пиком ошибки. Учитывая, что RMS записи может быть на порядок меньше, чем RMS полноамплитудного синуса, то эффективных бит там будет уже поболе. Однако, если спрашивать меня - всё равно соглашусь, что 32 бита недостаточно для "аудиофильности" процессинга. Причём независимо FFT там, или даже обычные IIR. 32 бит флоат - это лишь 25 бит реального разрешения. Плюс ошибки имеют свойство накапливаться.

Ссылка на комментарий
Поделиться на других сайтах

30 минут назад, igorzep сказал:

32 бит флоат - это лишь 25 бит реального разрешения. 

Даже 24 - 23 мантисса + знак.

Ссылка на комментарий
Поделиться на других сайтах

20 minutes ago, アントン said:

Даже 24 - 23 мантисса + знак.

В качестве эксперимента тестировал сам: int -> normalized float -> int, сохраняется bit-perfect до 25 бит, работает как 24+знак, хотя везде задокументировано 23+знак. Почему - объяснить не могу, но факт. Тестировал c Java и C.

Ссылка на комментарий
Поделиться на других сайтах

36 минут назад, igorzep сказал:

В качестве эксперимента тестировал сам: int -> normalized float -> int, сохраняется bit-perfect до 25 бит, работает как 24+знак, хотя везде задокументировано 23+знак. Почему - объяснить не могу, но факт. Тестировал c Java и C.

https://ru.wikipedia.org/wiki/Число_одинарной_точности

Видимо, из-за этого "Так как в нормализованной двоичной мантиссе целая часть всегда равна единице, то в поле мантиссы записывается только её дробная часть"

Ссылка на комментарий
Поделиться на других сайтах

Видимо, так и есть, откуда и появляется лишний "бесплатный" бит разрешения.

Ссылка на комментарий
Поделиться на других сайтах

4 часа назад, アントン сказал:

@chebum если есть возможность выложите файл разницу прямой и FFT свёртки.

Ещё раз продублирую ссылку на файл:  https://drive.google.com/open?id=1q3uhPbxIIsTOGtRlGz40MAyfi9xaMwEM

Ссылка на комментарий
Поделиться на других сайтах

2 часа назад, igorzep сказал:

Однако, если спрашивать меня - всё равно соглашусь, что 32 бита недостаточно для "аудиофильности" процессинга.

Можете развить мысль почему так?

Ссылка на комментарий
Поделиться на других сайтах

Накопление вычислительной ошибки.

Ссылка на комментарий
Поделиться на других сайтах

..ну да, а то тут люди ногти грызут от стресса. Жизнь под откос идет. :D

Ссылка на комментарий
Поделиться на других сайтах

1 минуту назад, MikhailM сказал:

..ну да, а то тут люди ногти грызут от стресса

На ногах? И вообще свои ли ногти?..

Ссылка на комментарий
Поделиться на других сайтах

7 часов назад, chebum сказал:

Ещё раз продублирую ссылку на файл:  https://drive.google.com/open?id=1q3uhPbxIIsTOGtRlGz40MAyfi9xaMwEM

Советую его усилить на 90 дб и послушать. 32 бита FPU не хватает явно.

Ссылка на комментарий
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.
Примечание: вашему сообщению потребуется утверждение модератора, прежде чем оно станет доступным.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в теме...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

 Поделиться

  • Сейчас на странице   0 пользователей

    • Нет пользователей, просматривающих эту страницу.
×
×
  • Создать...