2011-04-12 3 views

답변

0

당신이 예상대로 나는 C=AAA 얻을

for i=1:3 
    C(i)=char('A'); 
end 

할 경우. 나는 당신이 C을 미리 할당했기 때문에 char의 십진수 값을 얻는 이유가 의심 스럽습니다. C=zeros(16). MATLAB은 배열을 numeric 유형으로 초기화 했으므로 요소를 char으로 바꾼 경우 즉시 숫자 값으로 변환됩니다.

더 나은 방법은 cells을 사용한 다음이를 매트릭스로 변환하는 것입니다.

C=cell(4,4);%# create an empty 4x4 cell 
for i=1:16 
    C{i}=char('A'); 
end 

C= 


    'A' 'A' 'A' 'A' 
    'A' 'A' 'A' 'A' 
    'A' 'A' 'A' 'A' 
    'A' 'A' 'A' 'A' 

이제 행렬로 변환 cell2mat를 사용

Cmatrix=cell2mat(C) 

Cmatrix= 

    AAAA 
    AAAA 
    AAAA 
    AAAA 

일반적으로, 나는 루프를 사용하지 것이다,하지만 난 당신의 정확한 요구 사항을 모르는, 그래서 예를 표시했습니다 귀하의 질문에 따라.

1

이 문제는 이미 이라는 변수가있어 숫자 데이터가 포함되어있는 것 같습니다. 문자를 숫자 행렬에 넣으려고하면 문자가 ASCII 값으로 변환됩니다. 당신이 당신의 위의 코드를 실행하기 전에 변수 C을 취소하면, 당신은 C에 대한 문자 행렬을 얻어야한다 :

>> clear C 
>> for i=1:2:3, C(i,2) = 'B'; end 
>> C 

C = 

B 

B 

참고이 경우 C이 null 문자 (ASCII 코드 0)와 3별로 2 배열이다 두 번째 열의 첫 번째 열과 두 번째 열에 당신이 널 (null) 문자의 16에 의해-16 문자 배열로 C를 초기화 할 경우에 위의 코드에 CLEAR 문을 대체 할 수

C = char(zeros(16)); 

다음 값을 입력하는 루프를 실행합니다. 'B'은 이미 문자 유형이므로 char('B')은 중복됩니다.

0

Matlab은 문자 'B'를 정수 ASCII 코드로 저장합니다. 사실, char는 int8을 의미합니다.

관련 문제