我如何允许MATLAB读取包含一度,Arcmins和Arcseconds的角度列表的文本文件



i有一个文本文件,其中包含一堆正确的升华和偏角值(以弧度和sec引用(,沿着它们相应的亮度沿侧面的一堆天空对象。

他们采用以下格式: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度= 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

最新更新