2010-05-05 52 views
0
n=0; 
disp('This program performs an angle conversion'); 
disp('input data set to a straight line. Enter the name'); 
disp('of the file containing the input Lambda in radian: '); 
filename = input(' ','s'); 
[fid,msg] = fopen(filename,'rt'); 
if fid < 0 
    disp(msg); 
else 
    A=textscan(fid, '%g',1); 
    while ~feof(fid) 
     Lambda = A(1); 
     n = n + 1; 
     A = textscan(fid, '%f',1); 
    end 
fclose(fid);  
end 
Alpha=Lambda*180/pi; 
fprintf('Angle converted from radian to degree/minutes/seconds:\n'); 
fprintf('Alpha  =%12d\n',Alpha); 
fprintf('No of angles =%12d\n',n); 
+0

这是什么?请格式化.. – SysAdmin 2010-05-05 04:43:00

+3

这里有什么问题? – Jonas 2010-05-05 04:52:27

+1

需要家庭作业标签吗? – 2010-05-05 05:45:50

回答

4

要转换到从度/分钟/秒至使用度:

Degree = MinutesOfArc/(60 MinutesOfArc/Degree) + 
     + SecondsOfArc/(3600 SecondsOfArc/Degree) 

例如,45度,30分钟,30秒= 45.508度。所以,你可以通过做反转该操作:

AlphaDeg = floor(Alpha); 
AlphaMinAndSec = (Alpha - AlphaDeg)*60; 
AlphaMin = floor(AlphaMinAndSec); 
AlphaSec = (AlphaMinAndSec - AlphaMin)*60; 

请注意,这不适合,因为floor操作的负输入工作。它也比它慢。但如果你的问题是作业,我会让你找出其余的。

+2

+1“剩下的留给学生做练习。” – Marc 2010-05-05 12:22:49