2013-06-04 6 views
0

이것은 내 코드입니다. 배열의 평균을 취합니다.matlab에 텍스트에 플로트 숫자 쓰기

for m=1:Q 
    for n=1:W 
     k=k+arr(m,n); 
    end  
    k=k/W 
    fprintf(fid,'%d\n',k); 
    k=0; 
end 

명령 창에는 값이 올바르지 만 텍스트는 올바르지 않습니다.

명령 창 출력 :

k = 52.4665 

k = 3.9971 

k = -3.5033 

...... 

텍스트 출력 :

 5.246647e+01 

    3.997084e+00 

    -3.503343e+00 

    -1.862232e+00 

... 
+2

사람들의 formatSpec 부분은 같은 번호입니다. '52.4665 == 5.246647e + 01' (인쇄 해상도 내). 그래서''fprintf'] (http://www.mathworks.com/help/matlab/ref/fprintf.html)에서 Matlab과 같은 형식으로 값을 출력하고 싶습니까? 'help fprintf'를 보셨습니까? 또는'doc fprintf'? 가까운 곳에서 뭔가를 얻을 수는 있지만, ['format'] (http://www.mathworks.com/help/matlab/ref/format.html) 명령을 사용하여 값의 표시 방법을 변경할 수 있습니다 명령 창에서 - 원하는 경우 '5.246647e + 01' 양식으로 숫자를 표시하도록 선택할 수도 있습니다. – horchler

+0

감사합니다. 내가 f 대신에 g를 쓸 때, 그것은 작동합니다. – user2386416

답변

2

그것은 형식의 문제입니다. fprintf 행을

fprintf(fid,'%1.4f\n',k); 

으로 변경하면 MATLAB에서와 동일한 결과를 얻게됩니다.

체크 아웃

http://www.mathworks.com/help/matlab/ref/fprintf.html

+1

작은 값의 경우에도 작동합니다. 'abs (k)> = 1e9'의 경우 Matlab은 명령 창에'1.0000e + 09'를 출력합니다. 그러나'fprintf (1, '% 1.4f \ n', 1e9)'는'1000000000.0000'을 반환합니다. 이것은'format short'를위한 것입니다. – horchler

+0

그것은 또한 작동합니다 :) – user2386416