|
2 / 2 / 0
Регистрация: 22.09.2013
Сообщений: 219
|
||||||
Двумерная свертка18.06.2014, 17:01. Показов 6919. Ответов 16
Метки нет (Все метки)
Добрый день.
Пытаюсь в Matlab самостоятельно реализовать двумерную свертку и сравниваю ее со встроенной функцией CONV2. Для вещественных массивов все хорошо работает. А для комплексных массивов возникают проблемы, т.е. вместо того чтобы выделить какую то определенную точку, функция получает просто много точек, растянутых вдоль сигнала. Подскажите как для комплексных массивов так же получить какой то определенный центр, как и в случае с вещественным. Простой пример, на котором проверяю работу:
0
|
||||||
| 18.06.2014, 17:01 | |
|
Ответы с готовыми решениями:
16
Свертка свертка функций Свертка и корреляция |
|
2 / 2 / 0
Регистрация: 22.09.2013
Сообщений: 219
|
||||||
| 18.06.2014, 18:42 [ТС] | ||||||
|
Плохой пример наверно привел, с косинусами по сути все работает.
Вот в этом коде, у меня свертка неверная (в частности пик представлен не одной точкой, а несколькими пиками, что странно). Причем неверно как у меня работает, так и в матлабе.
Причем как мне кажется проблема не в свертке, а в моем сигнале, который я обработать пытаюсь. Подскажите пожалуйста что в нем не так, что происходит подобная ситуация.
0
|
||||||
|
36 / 36 / 0
Регистрация: 12.05.2012
Сообщений: 26
|
|
| 19.06.2014, 01:40 | |
|
Вы делаете свёртку в частотной области не совсем верно.
И зачем такая куча циклов - непонятно. Нужно взять просто fft от каждого сигнала, перемножить их поэлементно, после чего ifft произведения, и не забыть развернуть результат при помощи fftshift (это особенность матлаба). Результат должен получиться аналогичным conv2.
4
|
|
|
2 / 2 / 0
Регистрация: 22.09.2013
Сообщений: 219
|
|
| 19.06.2014, 10:11 [ТС] | |
|
А если у меня изначально сигнал представлен матрицей?
причем signal1 - сигнал, а signal - опорная марица меньшего размера. и в итоге циклы у меня только для того чтобы пробежать этой матрицей по всему сигналу. А саму свертку я так и делаю как Вы говорите - через fft2 Но даже без них conv2 дает плохой результат (я про 2й пример)
0
|
|
|
36 / 36 / 0
Регистрация: 12.05.2012
Сообщений: 26
|
|
| 19.06.2014, 11:14 | |
|
Я бы дополнила опорную матрицу нулями, чтобы её размер стал такой же, как и сигнала, и использовала fft2 и ifft2. В одномерном случае обычно так и поступают.
1
|
|
|
2 / 2 / 0
Регистрация: 22.09.2013
Сообщений: 219
|
|
| 19.06.2014, 11:22 [ТС] | |
|
В одномерном да, но даже в одномерном случае как мне кажется лучше брать шаблон меньшего размера и им просто пробегать по всему сигналу.
А в двумерном, я не знаю как объяснить, но при свертке двух матриц я получу 1 верный элемент (под номером 0,0 ), для получения следующего мне нужно сдвинуть опорную матрицу по сигналу на один элемент. Тем более что если матрица будет больших размерах, то в случае если опорную матрицу брать тогог же размера NxM, то при вычислении fft2 матлаб будет создавать матрицу 2Nx2M. А это во первых требует слишком много памяти, а во-вторых, когда N и M достаточно большие, то матлаб просто не может использовать fft2 так как матрица 2Nx2M будет иметь слишком большой размер, который matlab не поддерживает.
0
|
|
|
36 / 36 / 0
Регистрация: 12.05.2012
Сообщений: 26
|
|
| 19.06.2014, 11:26 | |
|
если очень большой сигнал, то да, нужно именно пробегать по всему сигналу поотсчётно, или, что лучше, использовать блочную обработку. какие у вас размеры матриц?
1
|
|
|
2 / 2 / 0
Регистрация: 22.09.2013
Сообщений: 219
|
|
| 19.06.2014, 11:37 [ТС] | |
|
в идеале сигнал 4096х261072
а опорная матрица 13х261072 но такую матлаб не создает, поэтому я уменьшил период и получил 4096х261. Но даже в этом случае я хочу считать поотсчетно, чтобы для любых матриц работало. Поэтому вариант с дополнением нулями мне не хочется использовать. По сути я привел код во 2м сообщении. Но он почему то неверно работает. А для обычных синкусов например - все ок.
0
|
|
|
36 / 36 / 0
Регистрация: 12.05.2012
Сообщений: 26
|
|
| 19.06.2014, 11:50 | |
|
Советую делать блочную обработку, в книге Сергиенко "Цифровая обработка сигналов" есть описание двух видов алгоритмов. Встроенные функции матлаба могут давать не совсем тот результат, который хотелось бы. Лучше писать самому.
Добавлено через 4 минуты Код в сообщении - трудночитаемый... может версия попроще есть?
1
|
|
|
2 / 2 / 0
Регистрация: 22.09.2013
Сообщений: 219
|
|
| 19.06.2014, 11:57 [ТС] | |
|
К сожалению - нету. Там вначале генерируется сигнал, а дальше свертка.
0
|
|
|
53 / 53 / 14
Регистрация: 26.02.2014
Сообщений: 150
|
|
| 20.06.2014, 00:24 | |
|
Поясните свой код, а то неохота разбираться в том что вы накрутили. Во всяком случае это не похоже на то как делал бы я. Откуда там два вложенных цикла?
Может что посоветую.
0
|
|
|
2 / 2 / 0
Регистрация: 22.09.2013
Сообщений: 219
|
||||||
| 21.06.2014, 13:41 [ТС] | ||||||
|
Проще кода нету, но добавлю комментарии в то что имеется
0
|
||||||
|
36 / 36 / 0
Регистрация: 12.05.2012
Сообщений: 26
|
|
| 21.06.2014, 14:51 | |
|
Мне кажется массив signal выглядит очень странно, у него заполнена только 11-я строка - всё остальное - нули.
0
|
|
|
2 / 2 / 0
Регистрация: 22.09.2013
Сообщений: 219
|
|
| 21.06.2014, 15:08 [ТС] | |
|
Так как раз и проблема в том, чтобы понять - что в нем странного и как это поравить.
То что свертка вроде правильно работает, я убедился на других сигналах...
0
|
|
|
36 / 36 / 0
Регистрация: 12.05.2012
Сообщений: 26
|
|
| 21.06.2014, 15:12 | |
|
0
|
|
|
36 / 36 / 0
Регистрация: 12.05.2012
Сообщений: 26
|
|
| 21.06.2014, 15:15 | |
|
ну у вас путаница в индексах, ставьте брэкпоинты, смотрите в чём проблема.
0
|
|
|
2 / 2 / 0
Регистрация: 22.09.2013
Сообщений: 219
|
|
| 21.06.2014, 15:30 [ТС] | |
|
В чем путаница то?
Если вы этот массив покрутите немного дальше, то увидите, что тут парабола и получается как должно быть. А то что для каждого расстояния по несколько значения не равных нулю (как на вашем скрине - на расстоянии 11), то это из-за дискретизации.
0
|
|
| 21.06.2014, 15:30 | |
|
Помогаю со студенческими работами здесь
17
Свертка ЛЧМ сигналов
Преобразование поля антенны и двумерная интерполяция Свертка трехмерной плотности распределения вероятности. Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|
Фото: Daniel Greenwood
kumehtar 13.11.2025
|
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга,
Ты же видел моря и метели.
Как сменялись короны и стяги,
Как эпохи стрелою летели.
- Этот мир — это крылья и горы,
Снег и пламя, любовь и тревоги,
И бескрайние. . .
|
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1
У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\
А в самом низу файла-профиля. . .
|