Как мне написать матрицу в текст в шестнадцатеричном формате?

У меня есть матрица, скажем:

M = [1000 1350;2000 2040;3000 1400];

Я хочу записать эту матрицу в текстовый файл в шестнадцатеричном формате, например:

0x000003e8 0x00000bb8  
0x000007d0 0x000007f8   
0x00000bb8 0x00000578  

Я рассматривал возможность использования функции dec2hex, но она очень медленная и неэффективная. Это также дает мне вывод в виде строки, которую я не знаю, как реструктурировать для моего вышеуказанного требуемого формата.

MATlab напрямую преобразует шестнадцатеричные числа в десятичные при чтении из текстового файла, например. при использовании функции fscanf(fid,'%x').

Можем ли мы сделать то же самое при написании матрицы?


person Rakshit Kothari    schedule 07.10.2013    source источник


Ответы (2)


Вы можете использовать строку формата %x. Для демонстрации см. пример с sprintf ниже. Если вы хотите записать в файл, вам придется использовать fprintf.

M = [1000 1350;2000 2040;3000 1400];
str = sprintf('0x%08x\t0x%08x\n', M')

это приводит к

str =

0x000003e8  0x00000546
0x000007d0  0x000007f8
0x00000bb8  0x00000578
person H.Muster    schedule 07.10.2013

Вы можете использовать num2str со строкой формата:

str = num2str(M, '0x%08x ');

который возвращает

str =

0x000003e8 0x00000546
0x000007d0 0x000007f8
0x00000bb8 0x00000578

Используя это вместо sprintf, вам не нужно повторять строку формата для каждого столбца.

person Mohsen Nosratinia    schedule 07.10.2013