2014-07-21 1 views
1

matlab에서 .txt 파일로 행렬 사이에 헤더를 쓰는 루프를 만들려고합니다.루프에서 fprintf 및 dlmwrite로 matlab에 파일 쓰기

예제 코드 :

filename = 'sampleXLS.dat'; 
datfile = fopen(filename,'w'); 

header = 'Header \n'; 
mat1 = [1,2,3;4,5,6]; 
mat2 = [7,8;9,10]; 
mat3 = [11;12;13]; 

mats = {mat1,mat2,mat3}; 
for iter = 1:length(mats) 
    data = mats{iter} 
    fprintf(datfile, header); 
    dlmwrite(filename, data,'-append','delimiter',' ','precision', '%f'); 
end 

나는 내가 디버그 모드에서 파일하지만 단계 때, 1, 2 누락

Header 
Header 
Header 
3 
4 5 6 
7 8 
9 10 
11 
12 
13 

주를 얻고있다

Header 
1 2 3 
4 5 6 
Header 
7 8 
9 10 
Header 
11 
12 
13 

를 원하는 그 헤더 번호가 삽입 될 때마다 번호가 삽입되고 대체됩니다.

fprintf에 추가하도록 지시하는 방법이 있습니까?

답변

0

파일 핸들을 열 때이 핸들은 현재 위치를 포함하는 상태입니다. 자세한 내용은 fopen(fileID)을 확인하십시오.

fseek(datfile, 0, 'eof');을 사용하여 파일 끝에 쓸 파일 핸들을 설정해야합니다. 그렇지 않으면 이전에 중지 한 위치를 계속 작성해야합니다.

filename = 'sampleXLS.dat'; 
datfile = fopen(filename,'w'); 

header = 'Header \n'; 
mat1 = [1,2,3;4,5,6]; 
mat2 = [7,8;9,10]; 
mat3 = [11;12;13]; 

mats = {mat1,mat2,mat3}; 
for iter = 1:length(mats) 

    data = mats{iter}; 
    fseek(datfile, 0, 'eof'); 
    fprintf(datfile, header); 

    dlmwrite(filename, data,'-append','delimiter',' ','precision', '%f'); 
end 

또는 대신 마지막에만 추가 할 수 있습니다 wa을 사용하여 파일을 열 수 있습니다.

filename = 'sampleXLS.dat'; 
datfile = fopen(filename,'a'); 

header = 'Header \n'; 
mat1 = [1,2,3;4,5,6]; 
mat2 = [7,8;9,10]; 
mat3 = [11;12;13]; 

mats = {mat1,mat2,mat3}; 
for iter = 1:length(mats) 

    data = mats{iter}; 
    fprintf(datfile, header); 

    dlmwrite(filename, data,'-append','delimiter',' ','precision', '%f'); 
end