noise.c

来自「QPSK在AWGN传输中的检测性能 QPSK在AWGN传输中的检测性能」· C语言 代码 · 共 31 行

C
31
字号

#include "const.h"

extern double CNR;


void awgn(double (*transmitted_signal)[2], double (*received_signal)[2]){
	int n;
	double r1, r2;
	double amp, phase;
	double gamma, noise[2];

	gamma = pow(10.0, CNR / 10.0);

	for(n=0; n<SYMBOLN; n++) {
		r1 = (double)rand()/RAND_MAX;
		r2 = (double)rand()/RAND_MAX;
		if(r1 <= 1.0e-8) {
			r1 = 1.0e-8; //防止出现log0的操作
		}
		
		amp = sqrt(-log(r1) / gamma);
		phase = 2.0 * PI * r2;
		noise[0] = amp * cos(phase);
		noise[1] = amp * sin(phase);

		received_signal[n][0] = transmitted_signal[n][0] + noise[0];
		received_signal[n][1] = transmitted_signal[n][1] + noise[1];
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?