Используйте это -
str2num(num2str(fliplr(reshape(A,2,[])'),'%1d'))
Выход -
ans =
21
43
65
87
Если вы хотите, чтобы напечатать его в качестве символов, использовать его без str2num
, как это -
num2str(fliplr(reshape(A,2,[])'),'%1d')
Выход -
ans =
21
43
65
87
Общий случай с нулями дополнения -
A=[1 2 3 4 5 6 7 8 9 3] %// Input array
N = 3; %// groupings, i.e. 2 for pairs and so on
A = [A zeros(1,N-mod(numel(A),N))]; %// pad with zeros
out = str2num(num2str(fliplr(reshape(A,N,[])'),'%1d'))
Выход -
out =
321
654
987
3
Edit для шестнадцатеричных чисел:
Ar = A(flipud(reshape(1:numel(A),2,[])))
out1 = reshape(cellstr(dec2hex(Ar))',2,[])'
out2 = [char(out1(:,1)) repmat(' ',[numel(A)/2 1]) char(out1(:,2))]
Выход -
out1 =
'FF' '01'
'7A' '03'
'6B' '55'
out2 =
FF 01
7A 03
6B 55
Похоже [код гольф] (http://en.wikipedia.org/wiki/Code_golf) проблема;) - так что мое предложение было бы '([1,10] * reshape (A, 2, [])) ''(25 символов) – bdecaf
' rot90 (reshape (A, 2, []), 3) '(24 символа) :-) @bdecaf –
' A = [01 FF 03 7A 55 6B] 'не работает с MATLAB. – Divakar