⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bpsk.cpp

📁 包括RS码的编码,硬(BM)/软(KV)译码,AWGN信道调制解调仿真. 具体采用何种编译码方案和调制解调方式可在Profile.txt文件中指定(内有详细说明). 且扩展性极好,容易向其中加入新的调
💻 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 + -