主要内容

gpsPCode

为GPS卫星生成p码

描述

gpsPCode系统对象™为全球定位系统(GPS)卫星生成精确码(p码),定义见IS-GPS-200L章节3.3.2.2[1]

为GPS卫星生成一个p码。

  1. 创建gpsPCode对象并设置其属性。

  2. 调用带有参数的对象,就像调用函数一样。

要了解更多关于System对象如何工作的信息,请参见什么是系统对象?

创建

描述

例子

pgenerator= gpsPCode创建一个默认的P-code生成器系统对象。

例子

pgenerator= gpsPCode (名称,值属性使用一个或多个名值对。例如,“PRNID”,10伪随机噪声(PRN) ID为10。

属性

全部展开

除非另有说明,属性为nontunable,这意味着在调用对象后不能更改它们的值。对象在调用时锁定,而释放函数解锁它们。

如果属性是可调,您可以随时更改其值。

有关更改属性值的更多信息,请参见在MATLAB中使用系统对象设计系统

GPS卫星PRN索引,指定为这些选项之一。

  • 整数,范围[1,210]-使用此选项为单个卫星输入PRN索引。

  • [1,210]范围内整数元素的向量-使用此选项为多个卫星输入PRN索引。

PRN ID的具体取值请参见表3-Ia、3-Ib和6-I[1]

数据类型:|uint8

输出代码长度,指定为正整数。这个长度指定输出P-code的行数。

的默认值。10230对应于1毫秒的p码,因为p码芯片在10.23 MHz。

可调:是的

数据类型:|uint64

初始状态的格式,指定为“秒”“datetime”,或“芯片”

数据类型:字符|字符串

初始时间在一周内,指定为以下选项之一。

  • 范围[0,604,800]的整数-当您设置InitialStateFormat财产“秒”.在本例中,初始时间指定从一周开始经过的秒数。

  • datetime对象—当您设置InitialStateFormat财产“datetime”.在本例中,初始时间指定从一周开始到由指定的时间所经过的时间datetime对象。

请注意

p码是一周。

的默认值。0假设您设置了InitialStateFormat财产“秒”

依赖关系

要启用此属性,请设置InitialStateFormat财产“秒”“datetime”

数据类型:

从本周开始,运行的p码芯片的初始数量,指定为范围为[0,604,800x10.23e6]的整数。

最大输入值604,800x10.23e6是一周内运行的芯片总数(7×24×60×60×10.23e6)。

请注意

10.23 e6是一秒钟内所消耗的芯片数。

依赖关系

要启用此属性,请设置InitialStateFormat财产“芯片”

数据类型:|uint64

使用

描述

代码= pgenerator ()

输出参数

全部展开

生成的二进制值p码,指定为以下选项之一。

  • 方法时,System对象返回此选项PRNID属性作为标量。

  • 参数时,System对象返回此选项PRNID属性作为向量。矩阵的每一列表示生成的P-code,对应于PRNID向量。

的值OutputCodeLength财产。列的数量等于的长度PRNID财产。向量或矩阵的每个元素都是数据类型int8

数据类型:int8

对象的功能

要使用对象函数,请将System对象指定为第一个输入参数。例如,释放名为obj,使用以下语法:

发行版(obj)

全部展开

信息 对象的特征信息
一步 运行系统对象算法
释放 释放资源并允许更改系统对象属性值和输入特征
克隆 创建重复的系统对象
isLocked 确定系统对象正在使用中
重置 的内部状态重置系统对象

例子

全部折叠

创建一个精确代码生成器(P-code)系统对象™,然后设置它的属性。

pgen = gpsPCode;pgen。Prnid = [10 50];% 2卫星pgen。OutputCodeLength = 1024;pgen。InitialTime = 1800;%秒数(默认)disp (pgen)
gpsPCode属性:PRNID: [10 50] OutputCodeLength: 1024 InitialStateFormat: "seconds" InitialTime: 1800

生成p码。

代码= pgen();

创建P-code系统对象™并设置其属性。

pgen = gpsPCode;pgen。Prnid = 45;pgen。OutputCodeLength = 102400;

设置初始状态格式为chips。一周内生成最后5000个芯片的p码。

pgen。InitialStateFormat =“芯片”% 604800是一周的总秒数% 10.23e6为一秒钟内运行的P-code芯片数pgen。initialnumchipselaled = 604800*10.23e6 - 5000;代码= pgen();

创建一个P-code系统对象™,并指定PRN索引和输出代码长度。

将初始状态的格式设置为datetime对象。生成当前时间的p码。

pgen = gpsPCode;pgen。Prnid = 25;pgen。OutputCodeLength = 20460;pgen。InitialStateFormat =“datetime”;pgen。InitialTime = datetime(“现在”);代码= pgen();

显示P-code生成器的属性。

disp (pgen)
gpsPCode属性:PRNID: 25 OutputCodeLength: 20460 InitialStateFormat: "datetime" InitialTime: 31-Aug-2022 03:35:04

获取信息gpsPCode的系统对象™信息对象的功能。观察初始时间的精确度如何影响p码的生成。

创建一个P-code生成器系统对象™,然后指定它的属性。

格式pgen = gpsPCode
pgen = gpsPCode属性:PRNID: 1 OutputCodeLength: 10230 InitialStateFormat: "seconds" InitialTime: 0
pgen。InitialStateFormat =“芯片”;pgen。initialnumchipselaled = 8388600;

获取p码生成器的特征信息。

pgen.info
ans =带有字段的结构:totalnumchipselsold: 8388600 totalsecondselsold: 0.820000000000000

将时间提前1 / 4的p码芯片时间(即0.25/10.23e6)。

pgen1 = gpsPCode;pgen1。InitialTime = pgen.info. totalsecondselaled + 0.25/10.23e6
pgen1 = gpsPCode属性:PRNID: 1 OutputCodeLength: 10230 InitialStateFormat: "seconds" InitialTime: 0.820000024437928
pgen1.info
ans =带有字段的结构:totalnumchipselsold: 8388600 totalsecondselsold: 0.820000000000000

信息函数的输出显示没有增量TotalNumChipsElapsed在这种情况下,因为TotalNumChipsElapsed是用函数内部计算的吗

现在将时间提前一半的p码芯片时间(即0.5/10.23e6)。

pgen2 = gpsPCode;pgen2。InitialTime = pgen.info. totalsecondselaled + 0.5/10.23e6
pgen2 = gpsPCode属性:PRNID: 1 OutputCodeLength: 10230 InitialStateFormat: "seconds" InitialTime: 0.820000048875855
pgen2.info
ans =带有字段的结构:totalnumchipselsold: 8388601 totalsecondselsold: 0.820000097751711

信息函数输出现在显示TotalNumChipsElapsed由于内部使用了圆的()函数。

比较每个System对象调用的输出。

代码= pgen();Code1 = pgen1();Code2 = pgen2();code1 isequal(代码)% code和code1相等
ans =逻辑1
isequal (code1 code2)% code1和code2不相等
ans =逻辑0

参考文献

[1]是gps - 200 l。NAVSTAR GPS空间段/导航用户段接口。GPS企业空间和导弹系统中心(SMC) - LAAFB, 2020年5月14日。

扩展功能

C/ c++代码生成
使用MATLAB®Coder™生成C和c++代码。

版本历史

在R2021b中引入

另请参阅

功能

对象