Преобразование из двоичного в десятичное число в MATLAB
-
29-10-2019 - |
Вопрос
У меня проблема с преобразованием двоичного кода в десятичный (это кажется очень длинным).
родовое словоМожно ли изменить эту строку
родовое словок чему-то короче?
Решение
Вариант 1:
Один из способов упростить то, что вы делаете, - сначала создать матрицу масштабных коэффициентов 3 на 3 (то есть степени двойки) и инициализировать ее перед циклами:
родовое словоЗатем вы можете заменить все внутри вашего цикла следующими векторизованными операциями:
родовое словоВариант 2:
В качестве альтернативы я считаю, что вы можете полностью удалить обе петли и заменить их одним вызовом NLFILTER , чтобы получить код вашего кодового тега матрицы:
родовое словоДругие советы
Я не совсем уверен, что вы там делаете, но делает bin2dec
сделать то, что вы хотите?
Я добавляю другое решение с помощью COLFILT функция.
Он включает размещение всего скользящего окна в столбцы матрицы, которую мы обрабатываем с помощью специальной функции, а затем преобразовываем результат в исходную матрицу. Внутренне он использует IM2COL и функции COL2IM .
Вот пример:
родовое слово
По сравнению с @gnovice второй ответ, прочтите этот совет из документации NLFILTER . :
<цитата>nlfilter может долго обрабатывать большие изображения. В некоторых случаях, функция colfilt может выполнять ту же операцию намного быстрее.