如何让MATLAB读取包含角度列表(arcmins,arcmins和arcseconds)的文本文件?

时间:2018-03-26 10:46:38

标签: matlab

我有一个文本文件,其中包含一堆右上升和下降值(以弧分和秒为单位),表示一堆天空对象及其对应的亮度。

他们采用以下格式:12:55:35.52

我理解如何将它们提取到单元格数组中,并将它们转换为大型数组。但是,如果我尝试使用它们进行任何数学运算,则会产生1x0矩阵。

我假设这是由于MATLAB无法识别格式而无法读取其值。这是正确的假设吗?如果是这样我怎么能解决这个问题?

完整文件格式:

 12:55:35.74   0:00:55.4  INDEF  INDEF
 12:55:35.52  -0:02:32.9  11.829  0.004
 12:55:35.29  -0:01:15.2  15.756  0.111
 12:55:35.15   0:00:42.4  13.421  0.015
 12:55:35.14   0:00:34.0  INDEF  INDEF
 12:55:35.03   0:03:01.2  15.364  0.077
 12:55:34.95   0:03:58.8  21.016  14.655
 12:55:34.79  -0:02:20.5  INDEF  INDEF
 12:55:34.68  -0:02:30.1  15.535  0.087
 12:55:34.22  -0:02:39.1  18.067  0.940
 12:55:33.81  -0:01:15.0  19.359  3.107

1 个答案:

答案 0 :(得分:0)

您可能希望将它们转换为弧度以便于求和。

  • 1度= 2 * pi / 360弧度
  • 1 arcminute = 2 * pi /(360 * 60)弧度
  • 1 arcsecond = 2 * pi /(360 * 3600)弧度

在你的例子中:

12*2*pi/360 + 55*pi/(360*60) + 35.52*2*pi/(360*3600) = 0.2176

对于名为test.txt的文件,包含您的示例数据,它看起来像这样:

fid = fopen('test.txt','rt');
d=textscan(fid,' %.0f:%.0f:%.2f    %.0f:%.0f:%.1f  %.3f  %.3f','TreatAsEmpty','INDEF');
fclose(fid);
d = cell2mat(d);
res = d(:,1:3) .* [2*pi/360 , pi/(360*60) , 2*pi/(360*3600)];
sum(res,2)

>>
   0.217612208387255
   0.217611141797157
   0.217610026725690
   0.217609347986537
   0.217609299505169
   0.217608766210120
   0.217608378359175
   0.217607602657285
   0.217607069362236
   0.217604839219303
   0.217602851483210