GPS长数据捕获时的C/A码相位漂移
GPS信号长数据捕获C/A码相位不一致的问题
在生成了固定C/A码相位(固定速度、加速度为0m/s2、加加速度为0m/s3)的较长时间的仿真数据后,用来做多次捕获实验。此时会发现,当捕获的次数多了之后会出现C/A码相位的递增现象。当然除了程序可能出现的各种原因以外,还可以做如下解释:由于采样频率不能为C/A码速率的整数倍,所以对信号进行采样的过程中会出现样本边界模糊的问题,即正常情况下应该是N个样本而某些C/A码周期会出现N+1个样本的情况。这个就是导致长时间捕获后C/A码出现相位递增的根本原因。在做捕获的时候,本地C/A码形成的时候相位是从0开始的,也就是说会产生N+1个点,而不会产生N个点,所以在一段周期内就会多读出一个样本点来,而这种连续捕获的后果就会让C/A码从错误的起始点开始与接收数据对齐,继而导致一段时间后相位就会增加。
相关文档:
#include<stdio.h>
#include<math.h>
float x1,x2,disc,p,q;
int main()
{
void greater_than_zero(float,float);
void equal_to_zero(float,float);
void smaller_than_zero(float,float);
float a,b,c;
printf("\ninput a,b,c:");
scanf("%f,%f,%f",&a,&b,&c) ......
googletest C/C++ 测试框架非常好用,介绍及下载请看 http://code.google.com/p/googletest/
//============================================================================
// 使用 googletest 测试框架
//============================================================================
// Returns n! ......
/*
注意不断右移判断最低位是1有多少个的算法是错误的,
因为根据GNU C/C++的实现来看,负数是带符号填充进行右移的,所以如果是负数,该算法会死循环。
变通办法:Java可以用>>>逻辑右移位操作符,C/C++可以强制转换成无符号整数再处理
下面的程序是正解。其中num &= (num - 1) 会消除num的最小位置的"1" ......
#include "Stdio.h"
#include "Conio.h"
#include
#define size 81
#define lim 5
#define tstr "ABCDEFGH"
void display(char **p,int i);
void display2(char *p[],int i);
void display3(char (*p)[40],int i);
void testint();
int main(void)
{
testint();
getch();
return 0;
}
test1() ......