목차
C 이용한 QPSK 시스템 AWGN 채널에서의 BER 성능 시뮬레이션
QPSK 기본적인 이론
C Simulation을 하기 위한 C 코드
X-graph 프로그램을 이용한 출력파일 그래프
QPSK 기본적인 이론
C Simulation을 하기 위한 C 코드
X-graph 프로그램을 이용한 출력파일 그래프
본문내용
* 2] = 1;
}
else
{
rx[i * 2] = 0;
}
if (rn2[i] > 0)
{
rx[i * 2 + 1] = 1;
}
else
{
rx[i * 2 + 1] = 0;
}
}
// 원래 신호와 수신된 신호를 비교하여 error 개수 누적
for (i = 0; i < SAMPLE / 2; i++)
{
if (sn1[i] != rx[i])
{
sum++;
}
}
// 누적된 error를 샘플개수로 나누어 BER 확인
if (i != 20)
{
fprintf(error, "%d\t %lf\n", (int) snr, (double) sum / SAMPLE * 2);
}
else
{
fprintf(error, "%d\t %lf\n", (int) snr, (double) sum / SAMPLE * 2);
}
}
fclose(error);
return 0;
}
// 정규분포 만드는 과정
double gaussian1()
{
double v1, v2, s;
do
{
v1 = 2 * ((double) rand() / RAND_MAX) - 1; // -1.0 ~ 1.0 까지의 값
v2 = 2 * ((double) rand() / RAND_MAX) - 1; // -1.0 ~ 1.0 까지의 값
s = v1 * v1 + v2 * v2;
} while (s >= 1 || s == 0);
s = sqrt((-2 * log(s)) / s);
return v1 * s;
}
이론 참고 : [정보통신기술용어해설]
http://www.ktword.co.kr/abbr_view.php?nav=2&m_temp1=1150&id=783
}
else
{
rx[i * 2] = 0;
}
if (rn2[i] > 0)
{
rx[i * 2 + 1] = 1;
}
else
{
rx[i * 2 + 1] = 0;
}
}
// 원래 신호와 수신된 신호를 비교하여 error 개수 누적
for (i = 0; i < SAMPLE / 2; i++)
{
if (sn1[i] != rx[i])
{
sum++;
}
}
// 누적된 error를 샘플개수로 나누어 BER 확인
if (i != 20)
{
fprintf(error, "%d\t %lf\n", (int) snr, (double) sum / SAMPLE * 2);
}
else
{
fprintf(error, "%d\t %lf\n", (int) snr, (double) sum / SAMPLE * 2);
}
}
fclose(error);
return 0;
}
// 정규분포 만드는 과정
double gaussian1()
{
double v1, v2, s;
do
{
v1 = 2 * ((double) rand() / RAND_MAX) - 1; // -1.0 ~ 1.0 까지의 값
v2 = 2 * ((double) rand() / RAND_MAX) - 1; // -1.0 ~ 1.0 까지의 값
s = v1 * v1 + v2 * v2;
} while (s >= 1 || s == 0);
s = sqrt((-2 * log(s)) / s);
return v1 * s;
}
이론 참고 : [정보통신기술용어해설]
http://www.ktword.co.kr/abbr_view.php?nav=2&m_temp1=1150&id=783
소개글