Сообщество Экспонента
- вопрос
- 24.04.2023
Системы управления, Электропривод и силовая электроника, Другое, Автоматизация испытаний
Необходимо рассмотреть различные режимы работы энергосистемы в зависимости от загрузки двигателей,но в схеме это просто мощность,активная и реактивная соответсвенно. Так же для этих параметеров рассчи…
Необходимо рассмотреть различные режимы работы энергосистемы в зависимости от загрузки двигателей,но в схеме это просто мощность,активная и реактивная соответсвенно. Так же для этих параметеров рассчи…
1 Ответ
- Simulink
24.04.2023
- вопрос
- 23.04.2023
ПЛИС и СнК
Здравствуйте! Требуется помощь в написании кода на verilog. Генератор импульсной последовательности с заданными параметрами реализован в виде блок-схемы. Результат этого проектирования, временные диаг…
Здравствуйте! Требуется помощь в написании кода на verilog.
1 Ответ
- вопрос
- 19.04.2023
Изображения и видео, Цифровая обработка сигналов, Математика и статистика
Вроде как схема у меня получилась но при добавлении зависимости от температуры и старения возникли проблемы кто-нибудь знает как сделать по красоте?
Вроде как схема у меня получилась но при добавлении зависимости от температуры и старения возникли проблемы кто-нибудь знает как сделать по красоте?
- вопрос
- 14.04.2023
Глубокое и машинное обучение(ИИ), Математика и статистика, Системы управления
Прошу помощи в создании модели газотранспортной системы в Simulink/Simscape. Спасибо
Прошу помощи в создании модели газотранспортной системы в Simulink/Simscape. Спасибо
6 Ответов
- Simulink
- modeling
- газ
14. 04.2023
- вопрос
- 12.04.2023
Математика и статистика, Робототехника и беспилотники, Системы связи, Цифровая обработка сигналов
Всем привет. Мне нужно собрать схему FSK-модема для моей научной работы в университете. Требования:1. Модулятор в передатчике должен быть реализован на GMSK или 4-FSK (желательно не брать библиотечный…
Всем привет. Мне нужно собрать схему FSK-модема для моей научной работы в университете. Требования:1. Модулятор в передатчике должен быть реализован на GMSK или 4-FSK (желательно не брать библиотечный…
2 Ответа
- вопрос
- 06.04.2023
Цифровая обработка сигналов
Добрый день, уважаемые участники форума! Подскажите, пожалуйста, как можно забрать те данные, по которым был построен график спектра сигнала? Они мне нужны для дальнейшей нормировки в excel.
Добрый день, уважаемые участники форума! Подскажите, пожалуйста, как можно забрать те данные, по которым был построен график спектра сигнала? Они мне нужны для дальнейшей нормировки в excel.
1 Ответ
- вопрос
- 04.04.2023
Цифровая обработка сигналов
End
End
3 Ответа
- вопрос
- 02.04.2023
Другое
Добрый день/вечер! подскажите, пожалуйста, как настроить матлаб чтобы можно было работать с ним удаленно. то есть он развернут на одной ПЭВМ, а мне нужно подключится с другой ПЭВМ, но не к виндоус чер…
Добрый день/вечер! подскажите, пожалуйста, как настроить матлаб чтобы можно было работать с ним удаленно. то есть он развернут на одной ПЭВМ, а мне нужно подключится с другой ПЭВМ, но не к виндоус чер…
- Публикация
- 29.03.2023
Глубокое и машинное обучение(ИИ)
Но давайте будем честными, для не технических менеджеров продуктов, дизайнеров и предпринимателей, внутреннее устройство ChatGPT может показаться как волшебный черный ящик. Не волнуйтесь! В этой статье я постараюсь объяснить технологию и модель, лежащие в осно. ..
Это перевод статьи: https://bootcamp.uxdesign.cc/how-chatgpt-really-works-explained-for-non-technical-people-71efb078a5c9
Автор: Guodong (Troy) Zhao
Выход ChatGPT, созданного OpenAI в конце прошлого года, был явлением феноменальным — даже моя бабушка спрашивает об этом. Его возможности генерировать язык, похожий на человеческий, вдохновляют людей экспериментировать с его потенциалом в различных продуктах. Его крайне успешный запуск даже поставил давление на гигантов технологической отрасли, таких как Google, чтобы спешить выпустить свою собственную версию ChatGPT.
- ИИ
- ChatGPT
- OpenAI
- Искусственный интеллект
- NLP
- GPT
29.03.2023
- вопрос
- 27.03.2023
Цифровая обработка сигналов, Системы связи, Математика и статистика, Автоматизация испытаний, Встраиваемые системы, Радиолокация, Другое, Изображения и видео
Прошу помочь в реализации программы написанной в AppDesigner. оптический волновод , входные параметры, законы геометрической оптики , построение мод (волн) учитывая вышеперечисленные параметры,…
Прошу помочь в реализации программы написанной в AppDesigner. оптический волновод , входные параметры, законы геометрической оптики , построение мод (волн) учитывая вышеперечисленные параметры,…
- оптика
- Оптические системы
- Волоконная оптика
27.03.2023
Есть ли в Simulink блок, который реализует функцию FFTSHIFT MATLAB?
Есть ли в Simulink блок, который реализует функцию FFTSHIFT MATLAB? Неваэ спросил. 2020-09-25Я хотел бы знать, есть ли блок Simulink в любом наборе блоков, который реализует функцию FFTSHIFT MATLAB.
matlab, matrix, simulink
Ответ эксперта
Кшитий Сингх ответил. 2023-04-27 12:09:58
Нет доступного блока, реализующего функцию FFTSHIFT в Simulink.
Чтобы обойти эту проблему, вы можете использовать функциональный блок Embedded MATLAB для вызова этой функции.
Не устраивает ответ ?? СПРОСИТЕ СЕЙЧАС
САМЫЕ ПОПУЛЯРНЫЕ ВОПРОСЫ
Анализ БПФ, шумоподавление и фильтрация сигнала ЭКГ
Как дать название и имена осей графику, сгенерированному блоком XY Graph в Simulink
Почему я получаю сообщения об ошибках об особенностях моей модели Simulink?
Почему я получаю сообщения об сингулярностях в моей модели Simulink?
Как определить область кожи в цветовом пространстве YCbCr?
как преобразовать цифровые данные в аналоговые данные с помощью кода Matlab?
как преобразовать цифровые данные в аналоговые данные с помощью кода Matlab?
как преобразовать цифровые данные в аналоговые данные с помощью кода Matlab?
Как извлечь данные из рисунков MATLAB?
Индекс превышает количество элементов массива (1)
Недавние проекты Matlab
Классификация КТ-сканирования легких Covid и Non-Covid с использованием глубокого обучения с MATLAB
Моделирование Matlab в системе ветроэнергетики
Пошаговое программирование в MATLAB
Займемся программированием на Python
Методы оптимизации энергосистемы с помощью кодов Matlab
Matlabsolutions. com обеспечивает гарантированное удовлетворение обязательством выполнить работу в срок. В сочетании с нашей тщательной рабочей этикой и обширным опытом работы в домене мы являемся идеальным партнером для всех ваших потребностей в домашней работе / задании. Мы обязуемся обеспечить поддержку 24 часа в сутки, 7 дней в неделю, чтобы развеять все ваши академические сомнения. Мы состоит из более чем 300 уважаемых Matlab и других экспертов, которые были отобраны после обширных исследований и проверки качества.
Matlabsolutions.com уделяет пристальное внимание каждому заказу Matlab с методическим подходом к решению. Наша сеть не ограничивается США, Великобританией и Австралией, а распространяется на такие страны, как Сингапур, Канада и ОАЭ. Наши справочные услуги по заданиям Matlab включают в себя задания по обработке изображений, задания по электротехнике, помощь в выполнении домашних заданий по Matlab, помощь в исследовательской работе по Matlab, помощь по Matlab Simulink. Выполняйте свою работу по лучшей цене в отрасли.
1D fftshift в CUDA путем умножения на шахматной доске | by Vitality Learning
Обычное соглашение, принятое библиотеками БПФ в случае 1D, заключается в том, что частота 0
располагается в первом элементе выходной последовательности. Последовательные элементы соответствуют возрастающим «положительным» частотам и, наконец, последние элементы выходного массива содержат возрастающие отрицательные частоты. Однако во многих случаях необходимо изменить положение 0
частота в центре преобразованной последовательности. В этом случае необходимо использовать так называемую fftshift
.
Наиболее распространенные среды программирования, такие как Matlab и Python, имеют подпрограмм fftshift
. Процедура Python fftshift
содержится в библиотеке numpy
.
В случае параллельного программирования на GPU, осуществляемого с помощью языка CUDA, fftshift
подпрограммы недоступны, поэтому необходимо построить кустарную.
fftshift
неявно включает перемещение памяти. Тем не менее, операции с памятью для графических карт, как известно, медленны. Тем не менее, можно получить тот же результат, что и ffthisft
, выполненный с перемещениями памяти посредством операций с плавающей запятой, благодаря свойствам дискретного преобразования Фурье (ДПФ).
Цель этого поста — сравнить подпрограммы, реализованные в соответствии с двумя возможными подходами с перемещением памяти и операциями с плавающей запятой, чтобы показать, насколько последний вариант более удобен.
Ниже мы иллюстрируем, что такое fftshift
, как его можно реализовать, используя два вышеуказанных подхода и результаты сравнения.
fftshift
изменяет многомерное дискретное преобразование Фурье, представленное многомерным массивом X
, сдвигая компонент нулевой частоты к центру X
.
На следующем рисунке показан сдвиг fftshift
в одном измерении.
Код на FFTShift_1D.cu сравнивает 5
различных способов выполнения fftshift
в случае, когда количество элементов N
четно.
1D CUDA
fftshift
с использованием движений памятиПервые два подхода используют движений памяти , как и в
[1] https://github.com/marwan-abdellah/cufftShift.
[2] М. Абделла, С. Салех, А. Эльдейб, А. Шаарави, «Высокопроизводительная многомерная (2D/3D) реализация БПФ-сдвига на графических процессорах (GPU)», Proc. 6-го Каирского межд. Биомед. англ. Conf., Каир, Египет, 20–21 декабря 2012 г., стр. 171–174.
В частности, первый из подходов памяти-движения использует операции на месте, а второй использует операции вне места. Единственная вычислительная разница между ними заключается в том, что для операций на месте требуется временная переменная для замены двух половин последовательности ДПФ, а для операций вне места — нет.
1D CUDA
fftshift
с использованием шахматного умноженияОстальные три подхода основаны на следующем наблюдении.
Отношение ДПФ задается как
Таким образом, ДПФ представляет собой периодическую последовательность с периодом, равным N
, и имеет нулевую частоту при индексе k=0
. Кроме того,
Соответственно, если мы хотим сдвинуть нулевую частоту к k=N/2
, то мы должны выбрать M=N/2
, так что
Другими словами, нулевую частоту можно сдвинуть в середину последовательности умножением сигнала на шахматную доску 1
с и -1
с в случае, когда сигнал имеет четное количество элементов.
Следует заметить, что в случае нечетного числа элементов M
следует выбирать равным (N-1)/2
, чтобы
Соответственно, в этом случае полное умножение на a нужна комплексная экспонента.
Умножение на шахматной доске выполняется с помощью процедур обратного вызова cuFFT.
Процедуры обратного вызова cuFFT
Цитирование библиотеки cuFFT Руководство пользователя,
Подпрограммы обратного вызова — это пользовательские подпрограммы ядра, которые cuFFT будет вызывать при загрузке или сохранении данных. Они позволяют пользователю выполнять предварительную или последующую обработку данных без дополнительных вызовов ядра.
Вызовы ядра действительно имеют свою цену, как подчеркивается в этом посте, и избегать их, насколько это возможно, является рекомендуемой привычкой программирования.
Обратите внимание, что цитирование раздела статической библиотеки в руководстве пользователя библиотеки cuFFT
Для cuFFT и cufftw в версии 9.0 или выше любая поддерживаемая архитектура может быть использована для связывания устройств:
Статическая команда компиляции cuFFT:
Так как умножение на шахматной доске требует до БПФ, то процедура обратного вызова имеет тип загрузки .
Обратите внимание, что, снова цитируя руководство пользователя библиотеки cuFFT, касающееся параметров для всех __device__
обратных вызовов загрузки, определены как ниже
-
смещение
: смещение входного элемента от начала выходных данных. Это не смещение в байтах, а количество элементов от начала данных. -
dataIn
: указатель устройства на начало входного массива, который был передан в вызовеcufftExecute
. -
callerInfo
: указатель устройства на дополнительные данные, указанные вызывающей стороной, переданные в вызовеcufftXtSetCallback
. -
sharedPointer
: указатель на разделяемую память, действителен, только если пользователь вызвалcufftXtSetCallbackSharedSize()
.
callerInfo
и sharedPointer
в рассматриваемом примере не используются.
Теперь сравниваются две версии
, относящиеся к подходу перемещения памяти и возвращающие результаты на месте и не на месте, и три версии, использующие разные способы реализации умножения на шахматной доске. Сравнение относится к случаю четного числа N
элементов.
Код CUDA, выполненный в блокноте Google Colab, доступен на нашей странице GitHub.
Тестирование проводилось как на старой карте (GTX 980 — вычислительная мощность 5.2
) и на более новой карте (Tesla T.4 — вычислительная мощность 7.5
). В следующих таблицах показаны результаты тестов (время в мс
):
Как видно, прирост производительности примерно 15%
может быть достигнут за счет умножения на шахматной доске по сравнению с подходом движений памяти . Обратите внимание, что вторая версия метода умножения на шахматной доске очень медленная из-за использования числа 9.0109 pow функция.
Чтобы завершить обсуждение, на нашей странице GitHub также предлагается реализация PyCUDA fftshift
в одном измерении. Такая реализация использует одно из двух наиболее производительных ядер CUDA, рассмотренных выше, и реализует fftshift
путем умножения на шахматной доске для случая четного числа элементов.