📄 symbol_mapping.c
字号:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
#include <windows.h>
#include "wimax.h"
//Symbol Mapping/De_Mapping
void QPSKmapping(int* input, int* output, int counter)
{
int i;
for (i=0; i<counter; i++)
{
if (input[i] == 0)
output[i] = -1;
else
output[i] = 1;
}
}
void QPSKdemapping(int* input, int* output, int counter)
{
int i;
for (i=0; i<counter; i++)
{
if (input[i] < -0.5)
output[i] = 0;
else if (input[i] >= -0.5 && input[i] <= 0.5)
if(DEBUG_FLAG>3)printf("\nQPSK undeterminable at location %d",i);
else
output[i] = 1;
}
}
void QAM16mapping(int* input, int* output, int* counter)
{
int i;
if ((*counter % 2) != 0)
{
*counter += 1;
input[*counter+1] = 0;
if(DEBUG_FLAG>3)printf("\nTo form 2-bit sets across the input stream, a '0' was added as the last bit.");
}
for (i=0; i<*counter; i++)
output[i] = (-2*input[2*i]+1)*(2*input[2*i+1]+1);
}
void QAM16demapping(double* input, int* output, int counter)
{
int i;
for (i=0; i<counter; i++)
{
if (input[i] <= -2)
{
output[2*i] = 1;
output[2*i+1] = 1;
}
else if (input[i] > -2 && input[i] < -0.5)
{
output[2*i] = 1;
output[2*i+1] = 0;
}
else if (input[i] >= -0.5 && input[i] <= 0.5)
if(DEBUG_FLAG>3)printf("\n16QAM undeterminable at location %d",i);
else if (input[i] > 0.5 && input[i] < 2)
{
output[2*i] = 0;
output[2*i+1] = 0;
}
else
{
output[2*i] = 0;
output[2*i+1] = 1;
}
}
}
void QAM64mapping(int* input, int* output, int* counter)
{
int i;
if ((*counter % 3) != 0)
{
(*counter) += 1;
if ((*counter % 3) != 0)
{
*counter += 1;
if(DEBUG_FLAG>3)printf("\nTo form 3-bit sets across the input stream, 2 '0's were added as the last bits.");
}
else
if(DEBUG_FLAG>3)
printf("\nTo form 3-bit sets across the input stream, a '0' was added as the last bit.");
}
for (i=0; i<*counter; i++)
output[i] = ((-2)*input[3*i]+1)*(4+((-2)*input[3*i+1]+1)*((-2)*input[3*i+2]+3));
}
void QAM64demapping(int* input, int* output, int counter)
{
int i;
for (i=0; i<counter; i++)
{
if (input[i] < -6)
{
output[3*i] = 1;
output[3*i+1] = 0;
output[3*i+2] = 0;
}
else if (input[i] >= -6 && input[i] < -4)
{
output[3*i] = 1;
output[3*i+1] = 0;
output[3*i+2] = 1;
}
else if (input[i] >= -4 && input[i] < -2)
{
output[3*i] = 1;
output[3*i+1] = 1;
output[3*i+2] = 1;
}
else if (input[i] >= -2 && input[i] < -0.5)
{
output[3*i] = 1;
output[3*i+1] = 1;
output[3*i+2] = 0;
}
else if (input[i] >= -0.5 && input[i] <= 0.5)
if(DEBUG_FLAG>3)printf("\n64QAM undeterminable at location %d",i);
else if (input[i] > 0.5 && input[i] < 2)
{
output[3*i] = 0;
output[3*i+1] = 1;
output[3*i+2] = 0;
}
else if (input[i] >= 2 && input[i] < 4)
{
output[3*i] = 0;
output[3*i+1] = 1;
output[3*i+2] = 1;
}
else if (input[i] >= 4 && input[i] < 6)
{
output[3*i] = 0;
output[3*i+1] = 0;
output[3*i+2] = 1;
}
else
{
output[3*i] = 0;
output[3*i+1] = 0;
output[3*i+2] = 0;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -