2015-01-26 2 views
3

Я очень новичок в Matlab. Я хочу сохранить шестнадцатеричные значения в массиве, как этотВставить шестнадцатеричные значения в массив в MATLAB

P=[0x96,0x97,0x98]; 

Но я перемещался на гугле я не получил никакого решения для этого Итак, сначала я преобразовал этот шестнадцатеричной в десятичную, так что я получил массив как этот

P=[150,151,152]; 

сейчас Я пытаюсь получить шестнадцатеричное значение значений массива P.

Я попытался

P=[dec2hex(150),dec2hex(151),dec2hex(152)]; 

Но когда я пытаюсь напечатать P (1), то вместо 96 я получил только 9. Я не понимая эту часть. Как я могу получить правильный результат? Пожалуйста, помогите мне.

ответ

4

Matlab хранит шестнадцатеричное число в виде массивов символов (или строк).

Так

a = dec2hex(150) 

возвращается:

a = '96' 

конкатенация шестнадцатеричные строки, как и вы:

P=[dec2hex(150),dec2hex(151),dec2hex(152)] 

возвращается:

P = '969798' 

Следовательно, P (1) = '9'

Вы, вероятно, хотите использовать клеточные массивы отдельно хранить шестигранные-номера:

P = {dec2hex(150),dec2hex(151),dec2hex(152)}; 
P{1} 

возвращается:

P = '96' 

для извлечения числовой стоимость, использование

hex2dec(P{1}) 
+0

Благодаря это работает – SNC

+0

Но hex2num не дает такой же ответ. Вместо этого мы можем использовать str2num (P {1}) для извлечения числа – SNC

+0

Mea culpa, я отредактировал мое сообщение, вы должны использовать hex2dec – Nick

2

См руководство по dec2hex

dec2hex - Convert decimal to hexadecimal number in string 

Вы получаете string и, таким образом, P(1) только дает первый символ строки.

Try что-то вроде:

>> P=[dec2hex(150);dec2hex(151);dec2hex(152)]; % note the ; instead of , 
>> P 

P = 

96 
97 
98 

>> P(1,:) 

ans = 

96 

Однако P еще массив символов.

2

Вы можете использовать arrayfun wit ч dec2hex работать на них поэлементно и производят массив ячеек в качестве вывода, который использует формат 0x... -

P=[150,151,152] %// Input array 
out = arrayfun(@(n) strcat('0x',dec2hex(P(n))),1:numel(P),'Uni',0) 

код запуска -

out = 
    '0x96' '0x97' '0x98'