1、实验题目:CDMA 编码
2、实验内容:
(1) 随机生成 5 个互不正交的 8 位码片 M1、M2、M3、M4、M5。
(2) 分别求出与 M1、M2、M3、M4、M5所有正交的 8 位码片。
3、实验报告内容:
(1) CDMA 信道复用原理。
(2) 随机生成的的 5 个互不正交的码片 M1、M2、M3、M4、M5。
(3) 获取与某个码片正交的全部码片的算法。
(4) 记录与M1正交的码片数量及10个与M1正交的码片,不足10个的记录全部码片, 互为反码的记为一个。
(5) 记录与M2正交的码片数量及10个与M2正交的码片,不足10个的记录全部码片, 互为反码的记为一个。
(6) 记录与M3正交的码片数量及10个与M3正交的码片,不足10个的记录全部码片, 互为反码的记为一个。
(7) 记录与M4正交的码片数量及10个与M4正交的码片,不足10个的记录全部码片, 互为反码的记为一个。
(8) 记录与M5正交的码片数量及10个与M5正交的码片,不足10个的记录全部码片, 互为反码的记为一个。
比较与 M1、M2、M3、M4、M5正交的码片总数并简单分析原因。
实验代码:
#include <iostream>
using namespace std;
void getchip(int * chip) //取随机8 位码片
{
for (int loop = 0; loop < 8; loop++)
{
if (rand() % 2) chip[loop] = 1;
else chip[loop] = -1;
}
}
int * ten2twe(int N, int * chip) //将10进制转码片
{
int loop = 0;
do {
if (N % 2) chip[7 - loop] = 1;
else chip[7 - loop] = -1;
N = (N - N % 2) / 2;
loop++;
} while (loop < 8);
return chip;
}
bool orthogonal(int * chip1, int * chip2) //是否正交
{
int sum = 0;
for (int i = 0; i < 8; i++)
{
if(chip1[i] == chip2[i]) return false;
}
return true;
}
bool complement(int * chi