📄 bpsk.cpp
字号:
#include <stdafx.h>
#include <math.h>
#include "BPSK.h"
int BPSKModulate(double* dst, UINT sym, void* BPSKModRegs) {
/*
if ((sym & 0x01)==1) dst[0]=1.0; else dst[0]=-1.0;
return 1;
*/
for (UINT mask=0x04; mask!=0; mask>>=1, dst++)
{
if ((sym & mask)!=0) *dst=1.0; else *dst=-1.0;
}
return 3;
}
//void InitBPSKMod(void* meanless, int& inWidth, int& outWidth) {inWidth=3; outWidth=3;}
int BPSKDemod(UINT& dst, const double* r, const AWGN* gauss, void* BPSKDemRegs) {
/*
if (r[0]>=0) dst=1; else dst=0;
return 1;
*/
int i=0;
for (UINT mask=0x04; mask!=0; mask>>=1, i++)
{
if (r[i]>=0) dst|=mask; else dst&=(~mask);
}
return 3;
}
/*给定输入信号矢量,求输出比特位为0的概率*/
int BPSKReliab(double* reliab, const double* r, const AWGN* gauss, void* BPSKDemRegs) {
double pr1, pr0;
for (int i=0; i<3; i++)
{
pr1=exp(-pow(r[i]-1.0, 2)/gauss->SqrVar2);
pr0=exp(-pow(r[i]+1.0, 2)/gauss->SqrVar2);
reliab[i]=pr0/(pr1+pr0);
}
return 3;
}
//void InitBPSKDem(void* meanless, int& inWidth, int& outWidth) {inWidth=3; outWidth=3;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -