在Matlab中绘制时间的错误

时间:2016-03-06 05:04:33

标签: matlab time plot

我绘制了一些变量和时间之间的关系。 时间位于矩阵中;部分如下:

-keep class rx.schedulers.Schedulers {
    public static <methods>;
}
-keep class rx.schedulers.ImmediateScheduler {
    public <methods>;
}
-keep class rx.schedulers.TestScheduler {
    public <methods>;
}
-keep class rx.subscriptions.Subscriptions{
    public static <methods>;
}
-keep class rx.exceptions.Exceptions{
    public static <methods>;
}
-keep class rx.schedulers.Schedulers {
    public static ** test();
}
-keepclassmembers class rx.internal.util.unsafe.*ArrayQueue*Field* {
       long producerIndex;
       long consumerIndex;
      }
-keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueProducerNodeRef {
        long producerNode;
         long consumerNode;
      }
-keep class rx.operators.OperationReplay* {
    *;
}

以小数点为单位转换后的UTC时间(时间间隔:1小时,间隔:1秒)。

我获得的数字似乎有错误: changes of latitude in time

这可能是由于我没有注意到的一些常见原因造成的吗? 谢谢。

更新

> 19.997777777777774
  19.998055555555560
  19.998333333333338
  19.998611111111117
  19.998888888888892

参考nmea:[195955 195956 195957 195958 195959]

1 个答案:

答案 0 :(得分:2)

这是因为您定义了会议记录的剩余部分。 如果您在更改分钟时运行代码,则会遇到问题。在这里你可以看到&#34;跳跃&#34;在s中的第三个值(-a round minute),导致time跳转:

nmea=[195858 195859 195900 195901 195902]
h=nmea/10000; 
h_int = floor(h); 
h_dec = h - h_int;
m = h_dec * 100; 
m_int = floor(m);
m_dec = m - m_int;
s = m_dec * 100
time= h_int + m_int/60 + s/3600

s =

   58.0000   59.0000  100.0000    1.0000    2.0000


time =

   19.9828   19.9831   19.9944   19.9836   19.9839

对于更短且更正确的方法,您可以使用mod功能:

nmea=[195858 195859 195900 195901 195902];
m_int=(mod(nmea,10000)-mod(nmea,100))/100;
s=mod(nmea,100);
time= h_int + m_int/60 + s/3600
time =

   19.9828   19.9831   19.9833   19.9836   19.9839