12 / 12 / 0
Регистрация: 20.11.2013
Сообщений: 167
|
||||||
1 | ||||||
Ускорение функции расчета автокорреляционной функции06.04.2017, 12:20. Показов 7341. Ответов 33
Метки нет (Все метки)
Доброго времени суток!
Столкнулся с необходимостью ускорения расчета автокорреляционной функции. Сейчас она реализуется следующим образом:
Делаю таким образом: 1. Заполняю вещественную часть 2*Win значениями вектора. Мнимая нулевая (сигнал сугубо вещественный). 2. Прямое преобразование Фурье. 3. Возвожу в квадрат мнимую и вещественную части результата (2). 4. Обратное преобразование Фурье. 5. Записываю Win значений в выходной массив и рисую его. Может быть я не понимаю методику или вообще не в ту сторону смотрю? Буду рад любой помощи и заранее спасибо!
0
|
06.04.2017, 12:20 | |
Ответы с готовыми решениями:
33
Составить программу для расчета функции Составить алгоритм для расчета функции Программа расчета функции - y=ctg lnx Составить программу расчета таблицы значений функции f(x) |
12 / 12 / 0
Регистрация: 20.11.2013
Сообщений: 167
|
||||||
07.04.2017, 13:51 [ТС] | 21 | |||||
Я сам проблему не изучал, но коллеги заморочились.
Например, при вызове
Возможно это и не так. Я, повторяюсь, в это не углублялся Добавлено через 31 секунду просто редко работаю с ним
0
|
12 / 12 / 0
Регистрация: 20.11.2013
Сообщений: 167
|
|
07.04.2017, 13:56 [ТС] | 23 |
Здесь полностью согласен.
0
|
techpriest
634 / 213 / 57
Регистрация: 27.02.2014
Сообщений: 1,180
|
|
07.04.2017, 13:58 | 24 |
А кстати, господа, что насчет операций с фиксированной точкой? Могут ли они оказаться быстрее плавающей арифметики?
0
|
12 / 12 / 0
Регистрация: 20.11.2013
Сообщений: 167
|
|
07.04.2017, 14:04 [ТС] | 25 |
Mirmik, Я пока понять не могу как обойти преобразование числа с плавающей точкой в число с фиксированной. нагрузка то все-равно дополнительная появится.......Хотя она может на самом деле ускорить процесс.
Останавливает еще то, что мне результат этой функции один фиг придется обратно в float переводить, чтобы дальше расчеты продолжить.
0
|
techpriest
634 / 213 / 57
Регистрация: 27.02.2014
Сообщений: 1,180
|
|
07.04.2017, 14:36 | 26 |
Зависит от размеров вашего массива.
Ваш алгоритм имеет квадратичную сложность, а преобразование - линейную. Чем больше массив, тем несопоставимей временные интервалы. Если у вас хотя-бы пятьдесят точек в этом массиве, вы затрат времени на преобразования даже незаметите по сравнению со временем вычисления развёртк Но будет ли выигрыш, конечно требует проверки.
0
|
1394 / 1023 / 325
Регистрация: 28.07.2012
Сообщений: 2,813
|
|
07.04.2017, 14:50 | 27 |
А выложи код с реализацией через ДПФ, авось кто-нибудь поймет и поможет. Можно попробовать сравнить результаты с тем, что выдает какой-нибудь мат-пакет по типу Matlab и прочих.
0
|
12 / 12 / 0
Регистрация: 20.11.2013
Сообщений: 167
|
|||||||||||
08.04.2017, 15:53 [ТС] | 29 | ||||||||||
nonedark2008, Делаю так:
Само БПФ реализовано следующим образом. Раньше никогда меня не подводили результаты этой функции. Её брал откуда то и "допиливал" под себя.
0
|
12 / 12 / 0
Регистрация: 20.11.2013
Сообщений: 167
|
||||||
10.04.2017, 18:12 [ТС] | 30 | |||||
Хрень какая то твориться........
Уже по методичке сделал: Т.е. обратное БПФ от призведения спектра на комплексно-сопряженный спектр - все равно хрень получается(( Уже тупо все в лоб закодил....
0
|
12 / 12 / 0
Регистрация: 20.11.2013
Сообщений: 167
|
|||||||||||
10.04.2017, 18:21 [ТС] | 31 | ||||||||||
опечатался - не
а
0
|
1394 / 1023 / 325
Регистрация: 28.07.2012
Сообщений: 2,813
|
|
10.04.2017, 23:53 | 32 |
Ну, в формуле проблем не было. Умножение числа на комплексно-сопряженное и дает в результате сумму квадратов мнимой и действительной частей. Я уже давно советовал проверить расчеты в какой-нибудь мат-библиотеке: Matlab, MathCAD, Maple...
Может вообще оказаться, что у тебя не ответ, а одни сплошные ошибки округления. Какой из результатов вообще больше похож на правду?
0
|
12 / 12 / 0
Регистрация: 20.11.2013
Сообщений: 167
|
||||||
11.04.2017, 12:47 [ТС] | 33 | |||||
nonedark2008, Проверял. результаты немного другие получаются. Сейчас разбираюсь сижу где все-таки не так сделал.
Вот результат именно расчета автокорреляции. Только работает он в 2 раза быстрее исходного алгоритма.
0
|
12 / 12 / 0
Регистрация: 20.11.2013
Сообщений: 167
|
|||||||||||
11.04.2017, 16:26 [ТС] | 34 | ||||||||||
В последнем посте у меня корреляция куска с самим собой на участке Win считалась. Для куска размером 2*Win поправил так:
Время работы функции с обвязкой упало с 25-140 мс на моей машине до 1-25 мс. в зависимости от количества необходимых операций (постоянно плавает). Результат вычислений испытания на модельных и "полевых" наборах данных выдержал. Результатом доволен - теперь полезу в обвязку Ускорение через быстрое преобразование Фурье реализовал как свертку комплексно-сопряженного спектра части сигнала размером Win со спектром куска размером 2*Win.
Всем большое спасибо за помощь и дельные советы!
2
|
11.04.2017, 16:26 | |
11.04.2017, 16:26 | |
Помогаю со студенческими работами здесь
34
Составить программу расчета таблицы значений функции Программа расчета функции с использование разложения Чебышева Составить программу расчета таблицы значений функции f(x) Написать блок-схему и программу расчета функции Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |