2017-01-06 4 views
1

각 요소에 대해 2 진 등가 번호를 나란히 배열하고자합니다. 즉, 최종 행렬 Concatenated_A은 크기가 m by nbits*n 인 경우 [m,n] = size(A)입니다.십진법에서 이진 변환으로 얻은 이진 문자열을 연결하십시오.

A = [5, 5, 4, 10, 4; 
    10, 10, 10, 10, 5; 

    ]; 

시도했지만 결과가 잘못되었습니다. 연결을 올바르게 구현하는 데 도움이 필요합니다. 고마워요

[m,n] = size(A); 
numbits = 4; 
for m = 1:M 

Abin = dec2bin(A(m,:),numbits); 
for j = 1:size(Abin,1) 
Concatenated_A(m,:) = Abin(j,:); 
end 

end 

첫 번째 행은 A(1,:) = 5, 5, 4, 10, 4입니다. 각 요소의 10 진수 변환은 다음과 같이 행렬을 제공합니다.

0 1 0 1 
0 1 0 1 
0 1 0 0 
1 0 1 0 
0 1 0 0 

다음, 나는 이런 식으로 뭔가 할 수있는 방법 : 위의 작업이 A의 모든 행에 대해 반복

Concatenated_A(1,:) = [0 1 0 1 0 1 0 1 0 1 0 0 1 0 1 0 0 1 0 0]

합니다.

답변

1

dec2bin의 결과를 이항 표현으로 변환하여 이진 표현이 열 아래로 이동 한 다음이를 원하는 모양으로 바꿔 각 행이 자체 행에 있도록 할 수 있습니다. 다시 모양을 만든 후에 행이 행을 다시 지나가도록 다시 조 변경합니다. 또한 시작하기 전에 A을 반드시 옮겨야하므로 행을 따라 인코딩 할 수 있습니다.

out = reshape(dec2bin(A.', numbits).', [], size(A, 1)).' 
% 01010101010010100100 
% 10101010101010100101 

아니면 대신 캐릭터 '1'

out = reshape(dec2bin(A.', numbits).', [], size(A, 1)).' == '1' 
% 0 1 0 1 0 1 0 1 0 1 0 0 1 0 1 0 0 1 0 0 
% 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 0 1 0 1 
+0

에 문자 배열을 비교할 수있는 논리적 매트릭스를하려는 경우 이진수이 올바르지 않습니다. 당신이 친절하게 대답을 볼 수 있다면 'Concatenated_A (1, :) = [0 1 0 1 0 1 0 1 0 1 0 0 1 0 1 0 0 0 0 0]'이 당신과 다르다. 결과 '0 1 0 1 1 0 1 0 0 1 0 1 1 0 1 0 0 1 0 0'은 다섯 번째 비트에서'1 '을 갖습니다. 기본적으로'nbits'의 단어로 바이너리 행을 변환하면 십진수 값의 행렬 'A'를 얻을 수 있습니다. 따라서 답안에서 '0 1 0 1 1 0 1 0 0 1 0 1 1 0 1 0 0 1 0 0'을 사용하면'A '의 첫 번째 행에'5,5,4,10,4 '가 주어집니다 . 하지만 이진 숫자가 올바르지 않기 때문에 답변을 기반으로하지 않습니다. –

+0

솔루션 접근 방식 모두 잘못된 바이너리 문자열을 제공합니다. ( –

+0

@SrishtiM 죄송합니다! – Suever