2011-04-22 7 views
3

그래서 Matlab에서 일하고 있는데 Matlab에서 문자열이 어떻게 작동하는지 이해하려고 할 때 실제 문제가 있습니다.Matlab은 문자열 "aaa"를 [ "a", "a", "a"] 배열로 변환합니다.

기본적으로 문자열을 이진 버전의 이중 배열에로드하려고합니다.

그래서 기본적으로 "a"를로드하고 [0 1 1 0 0 0 0 1]을 꺼냅니다.

문자열을 이진 표현으로 변환하지만 아래 코드는 배열로 변환 할 때 "a"= [ "01100001"]을 사용하고 번호를 사용하면 [1100001]로 변환됩니다. str2num

function loadString(obj, string) 
     binaryString = reshape(dec2bin(string, 8), 1, []); 

    end 

그래서 기본적으로 내가 "AAA"문자의 문자열을 배열로 변환하는 방법 용 IE 찾고 있어요 ->은 [ "A" "A" "A"]. 그렇게하면 binaryString을 str2num을 사용하여 변환 한 다음 [ "0" "1" "1" "0" "0" "0" "0" "1"] 변환합니다.

답변

4

당신이 찾고있는 무슨이이다 :

z = dec2bin('abc',8)' 
z1 = z(:)' 
z2 = arrayfun(@str2double, z1) 

z1 = 
011000010110001001100011 

z2 = 
    0  1  1  0  0  0  0  1  0  1  1  0  0  0  1  0  0  1  1  0  0  0  1  1 
+1

완벽한, 감사합니다! 나는 너에게 말한다. C조차도 나는 더 나쁜 표현을 발견했다. –

+0

멋지다, 짧고 달콤하다. 나는 회상 한 조각을 쓰는 재미를 가지고 있었다 :) – abcd

2

이 풍부한 C 버전의 최적화입니다 :

z = reshape(dec2bin('abc', 8)', 1, []) - '0' 
+0

+1. 나는 char zero를 빼는 것을 좋아한다. 그거 매끄럽다. –

관련 문제