#matlab
#matlab
Вопрос:
У меня действительно нет большого опыта работы с matlab, поэтому, пожалуйста, извините меня, если это глупый вопрос: у меня есть матрица Width * Height * 3 со значениями uint16, которая содержит изображение, теперь мне нужно взглянуть на байтовое представление. Чтобы прояснить, что я хочу, приведу небольшой пример, если бы это была матрица 1x1x3 со значениями 0x1234, 0x5678 и 0xABCD, я бы хотел массив, содержащий 6 uint8-значений: 0x12, 0x34, 0x56, 0x78, 0xAB и 0xCD. Чтобы я мог получить правильную гистограмму с 256 ячейками, которая точно показывает, какие байты встречаются как часто.
Конечно, я мог бы просмотреть всю матрицу и вычислить значения в 2 байта для каждого uint16, но с моими почти нулевыми знаниями matlab я бы использовал 2 цикла for и некоторое смещение битов, что привело бы к ужасной производительности
Приветствую Узаку
Ответ №1:
Я бы не стал переключаться на двоичное или шестнадцатеричное представление, в Matlab эти представления являются символами и не очень полезны для дальнейших вычислений. Я бы использовал это:
first_bits=M./2^8
last_bits=mod(M,2^8)
Может быть полезно объединить оба в 4d-матрицу
M2=cat(4,first_bits,last_bits)
Первые три измерения, как известно, последний индекс либо 1 для первых 8 бит, либо 2 для последних 8 бит.
Комментарии:
1. Спасибо, это было именно то, что я искал 🙂