|
2014 / 1286 / 61
Регистрация: 05.06.2010
Сообщений: 2,213
|
|||||||||||
Преобразование Фурье на ассемблере14.07.2010, 10:44. Показов 11510. Ответов 43
Метки нет (Все метки)
Ну так и здравствуйте! Имеется код на с (функция выполняет быстрое преобразование фурье):
ЗЫ: память выровнена по адресам кратным 16
0
|
|||||||||||
| 14.07.2010, 10:44 | |
|
Ответы с готовыми решениями:
43
Найти коэффиценты разложения в ряд Фурье, используя быстрое преобразование Фурье (БПФ) Преобразование звукового сигнала в спектр (Фурье-преобразование) Быстрое преобразование Фурье и ошибка "Неявное преобразование типа" |
|
шарпопочитатель
59 / 26 / 7
Регистрация: 31.01.2010
Сообщений: 1,035
|
|||||||
| 06.06.2011, 13:01 | |||||||
0
|
|||||||
|
2014 / 1286 / 61
Регистрация: 05.06.2010
Сообщений: 2,213
|
|||||||||||||||||||
| 06.06.2011, 13:50 [ТС] | |||||||||||||||||||
Фурье образ сигнала это разложение исходного сигнала на синусоидальные и косинусоидальные гармоники кратных частот. Каждый коэффициент разложения (элемент массива) означает амплитуду (вес) гармоники определенной частоты, какой именно - легко посчитать по простой пропорции:
0
|
|||||||||||||||||||
|
шарпопочитатель
59 / 26 / 7
Регистрация: 31.01.2010
Сообщений: 1,035
|
||||||
| 06.06.2011, 14:03 | ||||||
|
БПФ алгоритм. Я в поисковике не то искал видимо. БПФ везде есть на с++.
вот например:
0
|
||||||
|
2014 / 1286 / 61
Регистрация: 05.06.2010
Сообщений: 2,213
|
|
| 06.06.2011, 14:11 [ТС] | |
|
ht1515, это тот же самый алгоритм, только возвращает сразу амплитудный спектр (берет по модулю). А вообще оффтоп пошел какой то... Есть еще вопросы по алгоритму или его использованию именно на ассемблере?
0
|
|
|
0 / 0 / 0
Регистрация: 07.12.2011
Сообщений: 11
|
|
| 07.12.2011, 12:00 | |
|
Виталий как с Вами связаться возникли вопросы по данной теме мое мыло kosem777@gmail.com
0
|
|
|
2014 / 1286 / 61
Регистрация: 05.06.2010
Сообщений: 2,213
|
|
| 07.12.2011, 13:04 [ТС] | |
|
0
|
|
|
0 / 0 / 0
Регистрация: 07.12.2011
Сообщений: 11
|
|
| 07.12.2011, 13:47 | |
|
Я же специально дал мыло неужели трудно написать я нехочу флудить в Вашей теме если коротко то ассемблерный код который вы выложили у меня не работает (к примеру mov ecx, size_data
shl ecx, 2 ; * 2 * sizeof(double) ) даст не double size a увеличинеие буфера в 4 раза хотелось бы разобраться возможно я гдето недопонимаю.
0
|
|
|
2014 / 1286 / 61
Регистрация: 05.06.2010
Сообщений: 2,213
|
||
| 07.12.2011, 14:06 [ТС] | ||
|
Если есть вопросы по коду то это не флуд.
А почему не работает то? Покажите как вы тестировали? Код
0
|
||
|
0 / 0 / 0
Регистрация: 07.12.2011
Сообщений: 11
|
|
| 07.12.2011, 14:20 | |
|
Вот мой тест
0
|
|
|
2014 / 1286 / 61
Регистрация: 05.06.2010
Сообщений: 2,213
|
|
| 07.12.2011, 14:40 [ТС] | |
|
0
|
|
|
0 / 0 / 0
Регистрация: 07.12.2011
Сообщений: 11
|
|
| 07.12.2011, 14:46 | |
|
Да все работает если изначально в ecx передается 0 ! А в противном случае все падает.
Если у вас есть откомпилированный прием скинте рабочий я посмотрю под отладчиком.
0
|
|
|
0 / 0 / 0
Регистрация: 07.12.2011
Сообщений: 11
|
|
| 07.12.2011, 14:49 | |
|
Вот к примеру еще один вариант
0
|
|
|
2014 / 1286 / 61
Регистрация: 05.06.2010
Сообщений: 2,213
|
|
| 07.12.2011, 14:53 [ТС] | |
|
посмотрите в этой теме https://www.cyberforum.ru/post1730787.html (пост №18) Я писал про выравнивание памяти, скорее всего проблема именно в этом
0
|
|
|
0 / 0 / 0
Регистрация: 07.12.2011
Сообщений: 11
|
|
| 07.12.2011, 14:59 | |
|
Виталий я все это рочитал прежде чем вас беспокоить давайте по существу, у вас есть рабочий пример?
Я свой вариант вам скинул будьте взаимно вежливы.
0
|
|
|
2014 / 1286 / 61
Регистрация: 05.06.2010
Сообщений: 2,213
|
|
| 07.12.2011, 15:06 [ТС] | |
|
я вам тоже скинул код на котором тестировал. Этот код изначально был предназначен для вызова из с++, на ассемблере я не испытывал. Если вам интересно, я проверю. Проблема в общем только одна - память должна быть выровнена, это требование большинства simd команд.
0
|
|
|
0 / 0 / 0
Регистрация: 07.12.2011
Сообщений: 11
|
|
| 07.12.2011, 15:15 | |
|
Виталий конечно мне интересно я и на форуме зарегистрировался только чтобы обсудить с вами эту тему если у вас есть рабочий пример на c++ (не исходник а откомпилированный пример) скинте я посмотрю. Если вы можете посмотрите мой исходник на ASM а именно lo2.rar что там не так я буду вам признателен.
0
|
|
|
2014 / 1286 / 61
Регистрация: 05.06.2010
Сообщений: 2,213
|
|
| 07.12.2011, 17:22 [ТС] | |
|
посмотрел ваш исходник, к сожалению не смог скомпилировать, у меня наверно старый масм32, не поддерживает simd расширение. Свой пример я компилировал ml из пакета visual studio 2008. Ну что могу сказать без отладки - пример не корректный. Во первых, массив на вход должен быть типа double, а у вас байтовый. Кроме того он должен быть комплексным (выход тоже), то есть числа должны чередоваться (re, im, re, im ...) И вы переделали мой код под ifft (для прямого преобразования последний параметр в моей функции -1, это знак степени экспоненты)
0
|
|
|
0 / 0 / 0
Регистрация: 07.12.2011
Сообщений: 11
|
|
| 07.12.2011, 18:24 | |
|
Виталий, я скинул первый попавшийся откомпелированный пример,(я их много разных пробовал) и вот чего я сам не понимаю при малом объеме входного буфера пример действительно работает но если объем увеличить скажем до
100h то все - программа падает. По этому я и хотел с вашей помощью разобраться Фурье для меня это нечто новое. Если у вас есть откомпилированный пример на с++ прошу скинуть.У меня ваш код на c++ не компилируется vc 2006 выдает ошибки.'_aligned_malloc' : undeclared identifier : error C2374: 'i' : redefinition; multiple initialization : see declaration of 'i' : error C2065: '_aligned_free' : undeclared identifier А MASM действительно нужно настраивать чтобы он sse3 понимал.
0
|
|
|
2014 / 1286 / 61
Регистрация: 05.06.2010
Сообщений: 2,213
|
|||||||
| 08.12.2011, 09:10 [ТС] | |||||||
|
странно что не компилируется, может забыли подключить <malloc.h>?
Прикрепляю exe - ник. Исходник выглядит так:
0
|
|||||||
|
2014 / 1286 / 61
Регистрация: 05.06.2010
Сообщений: 2,213
|
|
| 08.12.2011, 11:32 [ТС] | |
|
забыл еще один важный момент. Длина входного массива обязательно должна быть степенью двойки, это требование бпф, в моем коде это не проверяется
0
|
|
| 08.12.2011, 11:32 | |
|
Преобразование Фурье Преобразование Фурье Преобразование Фурье
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|