📄 wimax_interleaver.cpp
字号:
#include "stdio.h"
#include "stdlib.h"
#include "conio.h"
#include <windows.h>
void WriteDat(int N_cbps,int *j,int set,char name2[]) //输出文本文件
{
int i,m=0;
FILE *out;
out=fopen(name2,"w"); //创建一个文件
if(out==NULL) //创建文件失败则退出
{
printf("无法创建文件");
exit(0);
}
fprintf(out,"\t\t\tWiMax 交织器\n ");
fprintf(out,"\t\t 数据块长度=%d bit (从左至右,从上至下)\n",N_cbps);
for(i=0;i<N_cbps;i++)
{
fprintf(out,"%5d",j[i]);
m++;
if(m==20)
{
fprintf(out,"\n");
m=0;
}
}
fclose(out); //关闭文件
}
void main()
{
int set,N_cbps,s,d=16,*m,*j,k;
char name[5],name2[25];
printf("说明:\n数据块长度: 32<=N_cbps<=4096\n");
printf("1.当选择BPSK和QPSK时,N_cbps 应为16的整数倍\n");
printf("2.当选择16QAM时,N_cbps应为32(16*2)的整数倍\n");
printf("3.当选择64QAM时,N_cbps应为48(16*3)的整数倍\n\n");
printf("请选择调制方式:\n1.BPSK\t2.QPSK\t3.16QAM\t4.64QAM\n");
scanf("%d",&set);
switch(set) //根据调制方式选择参数S
{
case 1:s=1;break;
case 2:s=1;break;
case 3:s=2;break;
case 4:s=3;break;
}
L1:printf("\n请输入数据块的长度:N_cbps="); //输入数据块长度,如有误,则重新输入
scanf("%d",&N_cbps);
if(N_cbps<32||N_cbps>4096)
{printf("输入数据块长度有误,请重新输入!\n");
goto L1;
}
if(s==1&&N_cbps%16!=0)
{
printf("输入数据块长度有误,请重新输入!\n");
goto L1;
}
else if(s==2&&N_cbps%32!=0)
{
printf("输入数据块长度有误,请重新输入!\n");
goto L1;
}
if(s==3&&N_cbps%48!=0)
{
printf("输入数据块长度有误,请重新输入!\n");
goto L1;
}
printf("\ns=%d\n",s);
m=new int[N_cbps]; //动态创建数组m[],用于存放第一次变换后的数据序号
j=new int[N_cbps]; //动态创建数组m[],用于存放第二次变换后的数据序号
for(k=0;k<N_cbps;k++) //执行第一次变换
{
m[k]=(N_cbps/d)*(k%d)+(k/d);
}
printf("\n");
for(k=0;k<N_cbps;k++) //执行第二次变换
{
j[k]=s*(m[k]/s)+(m[k]+N_cbps-d*m[k]/N_cbps)%s;
printf("%4d",j[k]);
}
getch();
system("cls"); //清屏
printf("\n\n请输入保存的文件名:"); //输入保存文本文件的名称
scanf("%s",name);
switch(set)
{
case 1:strcpy(name2,"WiMAX_BPSK_"); break;
case 2:strcpy(name2,"WiMAX_QPSK_"); break;
case 3:strcpy(name2,"WiMAX_16QAM_"); break;
case 4:strcpy(name2,"WiMAX_64QAM_"); break;
}
strcat(name2,name);
strcat(name2,".txt");
WriteDat(N_cbps,j,set,name2); //调用函数,保存数据到文本文件
delete[] m; //释放动态数组m[],j[]占据的内存空间
delete[] j;
getch();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -