2016-03-06 22 views
-1

Я построил связь между некоторыми переменными и временем. Время находится в матрице; ниже раздел:Ошибки во время построения графика в Matlab

> 19.997777777777774 
    19.998055555555560 
    19.998333333333338 
    19.998611111111117 
    19.998888888888892 

Это время UTC (промежуток времени: 1 час, интервал: 1 секунда) после преобразования по часам с десятичными разрядами.

На рисунке я приобрел, кажется, есть ошибки: changes of latitude in time

Может ли это быть вызвано какой-то общей причиной я не заметил? Спасибо.

Update:

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; 

ссылочной NMEA: [195955 195956 195957 195958 195959]

+0

Можете ли вы опубликовать код, который использовался для печати? – Aziz

+0

участок (время, данные1, время, данные2) – reznik

+0

и код, используемый для преобразования времени в десятичные часы? – Aziz

ответ

2

Это из-за способа, который вы определили остаток минут. Если вы запустите свой код при изменении минут, у вас возникнет проблема. Здесь вы можете увидеть «скачок» в третьем значении (-a круглой минуты) в s, которые вызывают скачок в 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 
Смежные вопросы