2011-11-20 4 views
0

m- 파일에서 셀 배열을 사용할 때 문제가 있습니다. 난 here에 주어진 함수를 사용하여 셀 배열의 번호를 만듭니다. 이 배열들 각각에 저장하는 것은 숫자 값을 텍스트 파일에서 읽는 것입니다 (문자열을 배열에 넣기 전에 문자열로 변환합니다).Matlab의 셀 배열에 정수 저장

1976787196 
8 
1976945848 
8 
1977105448 
8 

그리고 셀 어레이의 내용이있는 위의 점은 다음과 같습니다 것을

텍스트 파일이 포함되어 있습니다 문제는 몇 가지 숫자가 올바르게 배열에 strored하지 않는 것이다 다음 : 당신이 볼 수 있듯이

Columns 1 through 3 

       1976787196   681405151445000    1976945848 

    Columns 4 through 6 

      685476780441608    1977105448   685476780441608 

대신 8 stroring, 나는 매우 큰 정수를 얻을.

실제로 저는 32 비트 정수만 포함하도록 만드는 셀 배열의 모든 내용을 원합니다. 그 요구 사항을 어떻게 든 지정할 수 있습니까? 미리 감사드립니다!

답변

0

텍스트 파일에서 데이터를 읽는 방법에 따라 다릅니다. TEXTSCAN 기능을 사용해보십시오. 형식 문자열 '% u32'은 부호없는 32 비트 정수 데이터를 읽음을 지정합니다.

filename = 'test.txt'; 
fid = fopen(filename,'r'); 
x = textscan(fid,'%u32','delimiter','\t','CollectOutput',1); 
x = x{1}; 
fclose(fid); 
+0

문자열로 텍스트 파일을 읽었지만 셀 배열에 저장하기 전에 각 문자열 번호를 str2double로 두 번 변환합니다. 나는 셀 배열을 사용하지 않고 일반적인 (다 방향성) 행렬을 사용하려고 시도했지만 모든 것을 완벽하게 저장한다. 그러나 셀 배열은 메모리 사용 측면에서 훨씬 효율적이기 때문에 정규 매트릭스 대신 사용하는 것이 더 좋다. 아마 파일을 32 비트 단위로 읽어야 할 것 같습니다. 도움을 주셔서 감사합니다. – limp