对于我的项目,我需要在 Simulink 中计算 TOW(每周时间)。我知道这可以通过将UTC时间转换为GPS时间来实现。
我在 Matlab 中编写了一个简单的 m 文件,它在 Matlab 中为我执行如下操作:
date_gps_int = 10000*y + 100*m + d
date_gps_str = int2str(date_gps_int)
date_gps_str_to_serial = datenum(date_gps_str,'yyyymmdd')
date_str_format = datestr(date_gps_str_to_serial,'dd-mmmm-yyyy')
Num_Days = daysact('06-jan-1980',date_str_format)
Num_Weeks = Num_Days/7
TOW = Num_Weeks - 1024
我的第一个意图是在 simulink 中使用它作为一个函数。但显然因为 'datenum' 和 'datestr' 这是不可能的,因为 simulink 不处理字符串。
现在我想知道是否有人可以帮助我解决这个问题。有没有办法在不使用那些预定义函数的情况下从 Matlab 中的 UTC 日期计算 TOW?
我还尝试编写一个算法来计算自“1980 年 1 月 6 日”以来的天数,然后通过将其除以 7 来计算周数。但由于我对闰年计算不是很熟悉,而且我真的不知道公式对于这些类型的计算,我的结果与真实的 TOW 不同。
如果有人可以帮助我,我将不胜感激。