Дискуссионный математический форумМатематический форум
Математический форум Math Help Planet

Обсуждение и решение задач по математике, физике, химии, экономике

Теоретический раздел
Часовой пояс: UTC + 3 часа [ Летнее время ]
новый онлайн-сервис
число, сумма и дата прописью

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 48 ]  На страницу 1, 2, 3, 4, 5  След.
Автор Сообщение
 Заголовок сообщения: Рабочий(!) код БПФ
СообщениеДобавлено: 21 ноя 2021, 10:30 
Не в сети
Light & Truth
Зарегистрирован:
09 мар 2014, 08:58
Сообщений: 2770
Откуда: РФ
Cпасибо сказано: 49
Спасибо получено:
357 раз в 277 сообщениях
Очков репутации: 10

Добавить очки репутацииУменьшить очки репутации
Помогите, плиз, сделать РАБОТОСПОСОБНЫЙ код быстрого преобразования Фурье (БПФ, FFT).
Не надо мне объяснять про перестановки битов и умножение "бабочкой", всё это читано-перечитано. Помогите с конкретным кодом.
Прошерстил весь Интернет на предмет поиска исходников. Ничего внятного не нашел, везде пользуют готовые библиотеки.
Изучил много теоретических пособий с интегралами и матрицами, но даже те конкретные примеры, которые там даются - на самом деле не работают, как это ни странно(((((

Вот привожу код подпрограммы, переписанный мною на VB6 из книги Юкио Сато "Без паники! Цифровая обработка сигналов", стр.137:

' глобальные переменные
Public N 'число отсчетов, являющееся степенью двойки.
Public INV 'флаг направления: INV=1 -прямое БПФ, INV=-1 -обратное БПФ
Dim X(1024) 'массив входных отсчетов и выход - действительный компонент
Dim Y(1024) 'выход - мнимый компонент (размеры указаны просто с запасом)



Public Sub FFT()
'*******************************************
' Инверсия бита
J = 1
For I = 1 To N - 1
If I < J Then
XA = X(I): X(I) = X(J): X(J) = XA
YA = Y(I): Y(I) = Y(J): Y(J) = YA
End If
N2 = N / 2
While N2 < J
J = J - 2
N2 = N2 / 2
Wend
J = J + N2
Next I
' Здесь начинается БПФ
M = 0: N2 = N
While N2 <> 1
M = M + 1
N2 = N2 / 2
Wend
For L = 1 To M
LP = 2 ^ L
LP2 = LP / 2
DARG = -INV * 3.14159 / LP2
ARG = 0
For J = 1 To LP2
C = Cos(ARG): S = Sin(ARG)
ARG = ARG + DARG
For I = J To N Step LP
IW = I + LP2
WR = X(IW) * C - Y(IW) * S
WI = X(IW) * S + Y(IW) * C
X(IW) = X(I) - WR: Y(IW) = Y(I) - WI
X(I) = X(I) + WR: Y(I) = Y(I) + WI
Next I
Next J
Next L
If INV = 1 Then
For I = 1 To N
X(I) = X(I) / N
Y(I) = Y(I) / N
Next I
End If

End Sub


Но на самом деле этот код НЕ РАБОТАЕТ! То есть, по факту, первоначальные данные не восстанавливаются как должны.
Не могу найти где ошибка.

Кто знает БПФ? Помогайте!
Или хотя бы киньте ссылочку на заведомо рабочий исходник.
Здешний форум по высшей математике смотрел, там подраздел про Фурье весь студенты оккупировали решениями своих задач, всё прочесть ниасилил, сорь.

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Рабочий(!) код БПФ
СообщениеДобавлено: 21 ноя 2021, 10:58 
Не в сети
Свет и истина МРК
Аватара пользователя
Зарегистрирован:
06 янв 2015, 22:27
Сообщений: 7006
Откуда: Саратов
Cпасибо сказано: 783
Спасибо получено:
583 раз в 507 сообщениях
Очков репутации: -237

Добавить очки репутацииУменьшить очки репутации
Пользователь забанен за многократные злостные нарушения правил форума.

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Рабочий(!) код БПФ
СообщениеДобавлено: 21 ноя 2021, 12:04 
Не в сети
Light & Truth
Зарегистрирован:
09 мар 2014, 08:58
Сообщений: 2770
Откуда: РФ
Cпасибо сказано: 49
Спасибо получено:
357 раз в 277 сообщениях
Очков репутации: 10

Добавить очки репутацииУменьшить очки репутации
Сорь, Nataly-Mak, не успел прочесть Ваш ответ.

Проблема темы остается актуальна.

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Рабочий(!) код БПФ
СообщениеДобавлено: 21 ноя 2021, 12:07 
Не в сети
Свет и истина МРК
Аватара пользователя
Зарегистрирован:
06 янв 2015, 22:27
Сообщений: 7006
Откуда: Саратов
Cпасибо сказано: 783
Спасибо получено:
583 раз в 507 сообщениях
Очков репутации: -237

Добавить очки репутацииУменьшить очки репутации
Пользователь забанен за многократные злостные нарушения правил форума.

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Рабочий(!) код БПФ
СообщениеДобавлено: 21 ноя 2021, 12:16 
Не в сети
Light & Truth
Зарегистрирован:
09 мар 2014, 08:58
Сообщений: 2770
Откуда: РФ
Cпасибо сказано: 49
Спасибо получено:
357 раз в 277 сообщениях
Очков репутации: 10

Добавить очки репутацииУменьшить очки репутации
Киберфорум - воры. Они занимаются только тем, что воруют посты с других форумов и публикуют их у себя под измененными никами и поддельными датами.

На dxdy меня уже забанили :wink:

Хабр - отличный форум, я прошерстил его, но конкретно этого кода там нет, хотя теоретически вопрос разбирается. Но теории для меня уже достаточно, мне надо отыскать, в чем ошибка реализации столь давно известного алгоритма.

Личкой не пользуюсь. Во-первых не хочу ни от кого ни скрывать, ни скрываться, но самое главное - хочу чтобы исправленный рабочий код остался здесь в теме и был бы доступен для всех.

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Рабочий(!) код БПФ
СообщениеДобавлено: 21 ноя 2021, 12:21 
Не в сети
Свет и истина МРК
Аватара пользователя
Зарегистрирован:
06 янв 2015, 22:27
Сообщений: 7006
Откуда: Саратов
Cпасибо сказано: 783
Спасибо получено:
583 раз в 507 сообщениях
Очков репутации: -237

Добавить очки репутацииУменьшить очки репутации
Пользователь забанен за многократные злостные нарушения правил форума.

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Рабочий(!) код БПФ
СообщениеДобавлено: 21 ноя 2021, 12:23 
Не в сети
Последняя инстанция
Зарегистрирован:
08 апр 2015, 12:21
Сообщений: 7566
Cпасибо сказано: 229
Спасибо получено:
2749 раз в 2537 сообщениях
Очков репутации: 472

Добавить очки репутацииУменьшить очки репутации
Вряд ли сейчас можно найти исходник для БПФ на языке Basic, поскольку он давным-давно не в тренде! Попробуйте использовать исходники на Си, которые нетрудно перевести на Basic. А зачем вообще изобретать велосипед, если можно использовать библиотеки? Растущая популярность Python связана с возможностью использовать готовые библиотеки с нужными функциями! Кстати в последнее время растёт и популярность Фортрана, который, казалось, канул в лету во многом благодаря возможности использовать готовые фортрановские библиотеки, которые часто имеют исходники.

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Рабочий(!) код БПФ
СообщениеДобавлено: 21 ноя 2021, 12:31 
Не в сети
Light & Truth
Зарегистрирован:
09 мар 2014, 08:58
Сообщений: 2770
Откуда: РФ
Cпасибо сказано: 49
Спасибо получено:
357 раз в 277 сообщениях
Очков репутации: 10

Добавить очки репутацииУменьшить очки репутации
Потому что мне нужно ЗНАНИЕ правильного, реально рабочего алгоритма, а не тупая зависимость от того, нашел подходящую библиотеку, или нет.

Переводить - заманался уже переводить, не работает ничего, и непонятно, то ли при переводе что упустил, то ли исходник негодный.

Теперь вы переведите - с Бейсика на свой Си. Нету тут ничего чрезвычайного, работа с массивами практически одинакова.

Я же выложил код - давайте проверять его на ошибки. Кто разбирается в БПФ конечно, а не просто по клаве стучит.


Последний раз редактировалось O Micron 21 ноя 2021, 12:36, всего редактировалось 1 раз.
Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Рабочий(!) код БПФ
СообщениеДобавлено: 21 ноя 2021, 12:35 
Не в сети
Последняя инстанция
Зарегистрирован:
08 апр 2015, 12:21
Сообщений: 7566
Cпасибо сказано: 229
Спасибо получено:
2749 раз в 2537 сообщениях
Очков репутации: 472

Добавить очки репутацииУменьшить очки репутации
Проще самому написать с нуля, чем искать чужие ошибки. Тем более, если Вы хотите сами разобраться в БПФ!

Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Рабочий(!) код БПФ
СообщениеДобавлено: 21 ноя 2021, 12:37 
Не в сети
Light & Truth
Зарегистрирован:
09 мар 2014, 08:58
Сообщений: 2770
Откуда: РФ
Cпасибо сказано: 49
Спасибо получено:
357 раз в 277 сообщениях
Очков репутации: 10

Добавить очки репутацииУменьшить очки репутации
Ну напишите. На чем хотите. Но чтоб работало РЕАЛЬНО. И выложите здесь, буду разбираться.
Сам написать не могу - не получается ни от нуля, ни не от нуля. Не с фига же тему открыл.

Вернуться к началу
 Профиль  
Cпасибо сказано 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему    На страницу 1, 2, 3, 4, 5  След.  Страница 1 из 5 [ Сообщений: 48 ]

 Похожие темы   Автор   Ответы   Просмотры   Последнее сообщение 
Рабочий и детали

в форуме Комбинаторика и Теория вероятностей

Ylia1987++

0

227

08 дек 2017, 23:44

Рабочий, обслуживает три станка, вынужден был отлучиться

в форуме Комбинаторика и Теория вероятностей

Tatiana_1

1

172

21 сен 2022, 15:34

Рабочий изготовляет штучные изделия. Локальный закон

в форуме Теория вероятностей

Egoradamov315

1

159

15 мар 2022, 06:27


Часовой пояс: UTC + 3 часа [ Летнее время ]



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 12


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Яндекс.Метрика

Copyright © 2010-2023 MathHelpPlanet.com. All rights reserved