저는 MATLAB에서 문자로만 구성된 16x16 행렬을 구성했습니다. 나는 예를 들면 시도 :왜 문자를 MATLAB 행렬에 삽입 할 때이 오류가 발생합니까?
for i=1:2:3
C(i,2)=char('B');
end
행렬의 해당 위치에 문자 'B'
을 배치합니다. 그러나 이것은 문자 'B'
대신 행렬에 66
의 값을 제공합니다. 무슨 일 이니?
저는 MATLAB에서 문자로만 구성된 16x16 행렬을 구성했습니다. 나는 예를 들면 시도 :왜 문자를 MATLAB 행렬에 삽입 할 때이 오류가 발생합니까?
for i=1:2:3
C(i,2)=char('B');
end
행렬의 해당 위치에 문자 'B'
을 배치합니다. 그러나 이것은 문자 'B'
대신 행렬에 66
의 값을 제공합니다. 무슨 일 이니?
당신이 예상대로 나는 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
일반적으로, 나는 루프를 사용하지 것이다,하지만 난 당신의 정확한 요구 사항을 모르는, 그래서 예를 표시했습니다 귀하의 질문에 따라.
이 문제는 이미 이라는 변수가있어 숫자 데이터가 포함되어있는 것 같습니다. 문자를 숫자 행렬에 넣으려고하면 문자가 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')
은 중복됩니다.
Matlab은 문자 'B'를 정수 ASCII 코드로 저장합니다. 사실, char는 int8을 의미합니다.