2012-04-24 2 views
0

각 행에 대해 5 개의 항목이있는 파일을 읽으려고합니다. 그 중 2 개는 float이고 나머지는 정수입니다. 그러나, MATLAB의 fscanf 함수는 단지 두 행을 읽고, 나는 그것이 메모리 문제 (단지 5k 라인의 데이터에 대한 것 같아요?).matlab에서 형식화 된 입력을 읽는

이 문제를 해결하는 방법을 알고 계십니까?

답변

0

나는 메모리 문제를 의심합니다. 입력 파일에 예기치 않은 문자가있을 수 있습니까? 다음과 같이 재현 할 수 있습니까?

3.4E-5 4.2E14 1475 381 998877 
3.4E-5 4.2E14 1475 381 998877 
3.4E-5 4.2E14 1475 381 998877 
3.4E-5 4.2E14 1475 381 998877 
3.4E-5 4.2E14 1475 381 998877 

filename='input.txt'; 
fid = fopen(filename); 
A = fscanf(fid, '%f %f %d %d %d', [5 inf])'; 
fclose(fid); 


>> A(:,1) 

ans = 

    1.0e-004 * 

    0.3400 
    0.3400 
    0.3400 
    0.3400 
    0.3400 

>> A(:,5) 

ans = 

    998877 
    998877 
    998877 
    998877 
    998877 

input.txt를 input.txt을 나는 여러 숫자 유형 fscanf 사용할 때 두 배로 사방됩니다 확신 모든 숫자이기 때문에 그냥주의하십시오.

>> class(A(:,5)) 

ans = 

double 
+1

몇 가지 사소한 오류가 있습니다. A = fscanf ('% f ...는 A = fscanf (fid,'% f ... '이어야하며이 접근법은 입력 테이블의 조옮김을 A에 넣습니다. –

+0

) 사소한 오류가 수정되었습니다. – PopcornKing

관련 문제