2014-09-30 3 views
3

mathworks 웹 사이트를 검색 한 후 여기에서도 셀 데이터를 텍스트 파일로 저장하기 위해 지원되는 코드를 찾을 수있었습니다. 그러나 발견 된 모든 변형은 작동하지 않습니다. 여기에 내 현재 코드 (가장 여기 매스 웍스에 출연 한 것)이다 - 내가 나를 위해 작동하지 않는 이유를 알아내는 데 도움주세요 ... :Matlab에서 셀 배열을 텍스트 파일로 저장

첫 번째 시도 :

array = cell(1,10); 
for i=1:10 
    array{i} = 'someText'; 
end 
fid = fopen('file.txt', 'wt'); 
fprintf(fid, '%s\n', array); 
fclose(fid); 

오류 : fprintf와 기능을 사용하여

오류는 '세포'입력에 대해 정의되어 있지 않습니다.

saveToFile (줄 11)의 오류 fprintf (fid, '% s \ n', 배열);

두 번째 시도 :

array = cell(1,10); 
for i=1:10 
    array{i} = 'someText'; 
end 
fileID = fopen('celldata.dat','w'); 
[nrows,ncols] = size(array); 
for row = 1:nrows 
fprintf(fileID,'%s\n' ,array{row,:}); 
end 
fclose(fileID); 

오류 :

오류 :

그래서 내가 특별히 ( http://www.mathworks.com/help/matlab/import_export/write-to-delimited-data-files.html 여기에서 찾을 수 있습니다) 세포 배열을 위해 좋은 일을 찾았다 fprintf 사용 '셀'입력에 기능이 정의되지 않았습니다.

saveToFile (12 행)의 오류 fprintf (fileID, '% s \ n', 배열 {행, :}});

다른 실패한 시도를 남겨 둘 것입니다. 이러한 것들이 제가 찾을 수있는 최선의 방법이었습니다. 어떤 도움이라도 대단히 감사하겠습니다! :) 아래

+1

내가 MATLAB에서 명령 창에 두 번째 시도를 복사하고 완벽하게 일했다! –

+0

첫 번째 시도에서 '배열'대신 '배열 {:}'을 사용하는 것이 좋습니다. –

+1

예, Benoit의 제안에 따라 첫 번째 방법도 사용할 수 있습니다.) –

답변

0

코드는 잘 나를 위해 작동 :

array = cell(10,1); 
for i=1:10 
    array{i} = ['someText ' num2str(i)]; 
end 
fileID = fopen('celldata.dat','w'); 
[nrows,ncols] = size(array); 
for row = 1:nrows 
    temp_str = array{row,:}; 
    fprintf(fileID ,'%s\n', temp_str); 
end 
fclose(fileID); 

의 주요 차이점은 유형 CHAR의 변수에 셀 내용을 지정하는 것입니다.

+0

약간 지연되었지만 다른 사람들의 시간을 절약하기 위해 어쨌든 업데이트 할 것입니다. 게시 한 두 번째 시도는 실제로 작동했습니다. 내 (매우 큰 데이터)의 일부가 'NaN'을 값으로 가지기 때문에 일단 발견하고 그것들을 제거하면 효과가있었습니다. 도와 주셔서 감사합니다! :) –

0

또는, 당신은 문자열로 셀 어레이에 가입 strjoin을 사용할 수

array = cell(1,10); 
for i=1:10 
    array{i} = 'someText'; 
end 
line = strjoin(array) 
fid = fopen('file.txt', 'wt'); 
fprintf(fid, '%s\n', line); 
fclose(fid); 
관련 문제