Size: a a a

2021 January 18

d

disba1ancer in pro.algorithms
Dmitry Teh
т.е. или на вход FFT приходит меньшая амплитуда, или я номирую «не так»?

в Аудисити так делают

for (size_t i = 0; i < mWindowSize; i++)
 in[i] = win[i] * data[start + i];

PowerSpectrum(mWindowSize, in.get(), out.get());
for (size_t i = 0; i < half; i++)
 mProcessed[i] += out[i];

double wss = [сумма-значений окна];
wss = 4.0 / (wss*wss);
double scale = wss / (double)windows; //windows - сколько раз в файле нашлось окон
mProcessed[i] = 10 * log10(mProcessed[i] * scale);

если собрать, то получается, что они берут среднее out[i], умножают на 4 и делят на квадрат суммы элементов окна

в методичке сумма элементов окна - S1 (19)
и у меня получается, что

//PS RMS (23)
double value = (2 * avgSamples[i]) / (sum_win_s1 * sum_win_s1);
//LS
value = Math.Sqrt(value);
double valuedB = 20 * Math.Log10(value)

т.е. разница в том, что
* они умножают усреднённый бин на 4, а в методичке - на два
* умножают логарифм на 10, а в методичке - 20
пожалуйста, оформи код форматированием
источник

DT

Dmitry Teh in pro.algorithms
источник

d

disba1ancer in pro.algorithms
Dmitry Teh
можно показать целым солюшном студии C#?
или на какой-нибудь пастбин выложить кусками?
если целым солюшеном, то я бы рекомендовал репой на гитхабе
источник

d

disba1ancer in pro.algorithms
а вообще без окон пробовал?
источник

DT

Dmitry Teh in pro.algorithms
disba1ancer
если целым солюшеном, то я бы рекомендовал репой на гитхабе
есть. чуть причесал, сорри за не очень красивый кодстайл
https://github.com/TehDmitry/FFTDenoiseRMS
источник

DT

Dmitry Teh in pro.algorithms
disba1ancer
а вообще без окон пробовал?
вот без окна (синее)
источник

d

disba1ancer in pro.algorithms
тоже класс для FFT инициализируешь размером?
источник

DT

Dmitry Teh in pro.algorithms
ну так как-то само получилось
до причёсывания я вообще массивом семплов перекидывался через внешний код и изначально класс статическим был

просто вместо причёсывания кода погряз в том, что не получается правильный ответ
источник

d

disba1ancer in pro.algorithms
Dmitry Teh
ну так как-то само получилось
до причёсывания я вообще массивом семплов перекидывался через внешний код и изначально класс статическим был

просто вместо причёсывания кода погряз в том, что не получается правильный ответ
а ты сверял с результатами после DFT, которое за n^2 выполняется?
источник

DT

Dmitry Teh in pro.algorithms
кажется, нет. я тестил несколько либ и они выдавали одинаковые значения

но вот смотри. если сделать вот так

           AForge.Math.FourierTransform.FFT(complexBuffer, AForge.Math.FourierTransform.Direction.Backward);
           //AForge.Math.FourierTransform.FFT(complexBuffer, AForge.Math.FourierTransform.Direction.Forward);

(сделать обратное преобразование) то магическим образом всё становится вот так
источник

DT

Dmitry Teh in pro.algorithms
т.е. никаких смещений не нужно. просто как в методичке

но мне сказали, что всё равно, какое преобразование делать и, что принято делать прямое
и вот пытаюсь запустить прямое
источник

d

disba1ancer in pro.algorithms
Dmitry Teh
кажется, нет. я тестил несколько либ и они выдавали одинаковые значения

но вот смотри. если сделать вот так

           AForge.Math.FourierTransform.FFT(complexBuffer, AForge.Math.FourierTransform.Direction.Backward);
           //AForge.Math.FourierTransform.FFT(complexBuffer, AForge.Math.FourierTransform.Direction.Forward);

(сделать обратное преобразование) то магическим образом всё становится вот так
может ты при записи чего перепутал?
источник

АJ

Артём Jin in pro.algorithms
Задаёт ли язык мышление? Не знаю, насколько это объективное утверждение, но относительно себя я заметил такую вещь: с переходом в самом начале изучения с Pascal-я на Python я привык к его методам работы со строками и сахарным конструкциям, что понизило мой уровень алгоритмизации(написать buble sort или любой другой я вряд ли смогу на данный момент красиво). Вопрос: переходом на C++ я решу данную проблему? (оставаясь на Python я буду писать на Python и не буду прибегать к алгоритмам, что никак не будет прокачивать скилл составления алгоритмов).
источник

АJ

Артём Jin in pro.algorithms
Возможно оффтоп...
источник

BV

Boris Vinogradov in pro.algorithms
Артём Jin
Задаёт ли язык мышление? Не знаю, насколько это объективное утверждение, но относительно себя я заметил такую вещь: с переходом в самом начале изучения с Pascal-я на Python я привык к его методам работы со строками и сахарным конструкциям, что понизило мой уровень алгоритмизации(написать buble sort или любой другой я вряд ли смогу на данный момент красиво). Вопрос: переходом на C++ я решу данную проблему? (оставаясь на Python я буду писать на Python и не буду прибегать к алгоритмам, что никак не будет прокачивать скилл составления алгоритмов).
ну неиспользование алгоритмов в питон это скорее проблемы пользователя языка чем самого языка
источник

AK

Alexander Kryukov (k... in pro.algorithms
Язык задает шаблоны решения разных задач, не знаю можно ли называть это мышлением. Но может сильно покоребить  при смене парадигмы программирования.
С переходом на C++ ты скорее будешь учиться не отстреливать себе ноги мимоходом и сразу писать с микрооптимизациями.
Ну и алгоритмы вообще редко когда нужны, начав писать на плюсах ты так же не будешь писать алгоритмы, а скорее начнешь бороться со слабым окружением языка
источник

SS

Steel Sword in pro.algorithms
Артём Jin
Задаёт ли язык мышление? Не знаю, насколько это объективное утверждение, но относительно себя я заметил такую вещь: с переходом в самом начале изучения с Pascal-я на Python я привык к его методам работы со строками и сахарным конструкциям, что понизило мой уровень алгоритмизации(написать buble sort или любой другой я вряд ли смогу на данный момент красиво). Вопрос: переходом на C++ я решу данную проблему? (оставаясь на Python я буду писать на Python и не буду прибегать к алгоритмам, что никак не будет прокачивать скилл составления алгоритмов).
Методы работы со строками есть в любом ЯП. Даже в Си. У тебя есть конкретное объяснение, зачем тебе уметь красиво жонглировать байтами?
источник

a

anton in pro.algorithms
Артём Jin
Задаёт ли язык мышление? Не знаю, насколько это объективное утверждение, но относительно себя я заметил такую вещь: с переходом в самом начале изучения с Pascal-я на Python я привык к его методам работы со строками и сахарным конструкциям, что понизило мой уровень алгоритмизации(написать buble sort или любой другой я вряд ли смогу на данный момент красиво). Вопрос: переходом на C++ я решу данную проблему? (оставаясь на Python я буду писать на Python и не буду прибегать к алгоритмам, что никак не будет прокачивать скилл составления алгоритмов).
хотите интересных алгоритмов? переходите на Scheme
источник
2021 January 19

DT

Dmitry Teh in pro.algorithms
disba1ancer
а ты сверял с результатами после DFT, которое за n^2 выполняется?
кажется, нашёл. это в либе

заюзал MathNet.Numerics.IntegralTransforms.Fourier.Forward и, кажется, всё вполне норм стало
источник

DT

Dmitry Teh in pro.algorithms
скажите, пожалуйста, похожи ли на правду для распределений эти значения RMS в dbFS  в верхнем правом углу?
или я в них тоже напутал?
источник