我有一个文本文件,其中包含一堆右上升和下降值(以弧分和秒为单位),表示一堆天空对象及其对应的亮度。
他们采用以下格式: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
答案 0 :(得分:0)
您可能希望将它们转换为弧度以便于求和。
在你的例子中:
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