2013-10-02 2 views
4

이것은 다른 사람이 작성한 스크립트이며, 왜 이것이이 오류를 제공하는지 이해하지 못합니다 (저는 Matlab을 잘 모릅니다. 그러나 이것은 매우 간단한 스크립트 인 것 같습니다. 나는 좀 이상하다.)Matlab : fprintf를 사용하는 중에 오류가 발생했습니다.

%Write Nash 
     %Output file writing 
    %Write file header 
    D={'Conbination','Nash with Error','Nash-error','RMSE','RMSE-error',... 
    'AIC', 'MinNash', 'MaxNash'}; 
    NameOut=[filein,Nameout, '.txt']; 
    fileID = fopen(NameOut,'w'); 
    for i=1:length(D)-1 
     fprintf(fileID,'%s\t',D{i}); 

: 파일이

clear all 
    filein=['Runs/']; 
    Namein1=['AIC']; 
    Nameout=['Nash']; 

시작 그런 다음 다음 (이 문제에 대한 중요하지) 내쉬-Sutcliffe의 계수를 얻을 수있는 계산 한 무리의 하나 개의 파일에 결과를 쓰려고 않습니다 그리고 더 많은 물건은 다음,하지만 오류 메시지가 얻을 곳이다 : 여기에 잘못된 내가 무엇을 얻을하지 않습니다

Error using fprintf 
    Invalid file identifier. Use fopen to generate a valid file identifier. 

    Error in Nash_0EV_onlyT (line 169) 
    fprintf(fileID,'%s\t',D{i}); 

를? 스크립트는 파일을 지정하고 fopen ...을 사용합니다 ...? fopen 문으로 파일 Nash.txt를 생성하지 않아도됩니까 (이 파일은 현재 내 폴더 Runs /에 없습니다)? 내가 뭘 놓치고 있니? 감사!

PS 나는 OSX 10.8

답변

0

좋아 ... 내가 제대로 지정하지 않았다 쓰는 길! 그래서 그것은 입력을 읽고 있었지만 나는 어디에 쓸 것인지 알지 못했습니다. 답변을 주셔서 감사합니다, 그것은 문제의 범위를 좁히는 데 도움이되었습니다!

+1

좀 더 자세히 설명해 주시겠습니까? 아마도 문제를 해결하는 데 사용한 코드를 보여 주시겠습니까? 그런 다음 문제가 발생한 다른 사용자도이 솔루션을 찾을 수 있습니다. –

+0

음, 코드에서 아무 것도 변경할 필요가 없습니다. 나는 "현재 폴더"(Matlab 2013a (Mac OSX 10.8)의 왼쪽에있는 패널)를 생성 된 파일이 필요한 곳으로 설정해야했습니다. 표준 MATLAB 폴더로 설정되었지만, 그 위치에 쓰는 것이 어려웠습니다. – Geraldine

3

와 맥북 프로에 Matlab2013a (대학을 통해 그룹 라이센스)을 실행하고 다시이 스크립트를 호출하기 전에 fclose all를 사용해보십시오. 종종 테스트 할 때 파일 핸들이 해제되지 않습니다 (파일이 닫히기 전에 오류가 발생 함). 동일한 파일의 fopen이 실패합니다.

보다 페일 세이프 (fail-safe) 구조를 사용하는 것이 작업을 수행 할 수있는 더 좋은 방법 : 내가 말했듯이, 내가 matlab에 모르는, 그래서

NameOut = [filein Nameout '.txt']; 

fileID = fopen(NameOut,'w'); 

if fileID > 0 
    try 
     for i = 1:length(D)-1 
      fprintf(fileID,'%s\t',D{i}); 
     end 
     fclose(fileId); 

    catch ME   
     fclose(fileId); 
     throw(ME); 

    end  

else 
    error('Error opening file.'); 

end 
+0

나는 fclose all을 시도했다. 그리고이 스크립트를 삽입하면 '파일 열기 오류'가 발생합니다. 즉, 파일이 생성되지 않았다는 뜻입니까? 나는 왜 아직도 잘 모르겠다? : -S – Geraldine

1

저는 Win 10과 matlab 2015a를 실행하고 있습니다.하지만 그것은 내에서도 발생합니다.

마지막으로, 나는 그것을 시도 matlab.exe이

Nameout=['C:\Users\yourname\DesktopNash']; 

에 너무

변경 /../bin/ 폴더에 파일을 쓸 수 있다는 걸, 다음 말해 무엇 ' 계속.

관련 문제