1、描述空时网格码编码原理。
空时网格编码是一种能获取更高数据传输率的信号编码技术。空时编码是空间传输信号和时间传输信号的结合,实质上就是空间和时间二维的处理相结合的方法。
在新一代移动通信系统中,空间上采用多发多收天线的空间分集来提高无线通信系统的容量和信息率;在时间上把不同信号在不同时隙内使用同一个天线发射,使接收端可以分集接收。用这样的方法可以获得分集和编码增益,从而实现高速率的传输。现在是第三代移动通信系统中提高频谱利用率的一项技术。
2、设计或使用现有网格码,例如如图的2天线8状态的4PSK的空时网格码
3、编程实现空时网格码编码。
代码:
#include<stdio.h>
int main()
{
int a[8][8]={{0,0,2,0,2,2,0,2},{1,2,3,2,3,0,1,0},{2,1,0,1,0,3,2,3},{3,3,1,3,1,1,3,1},{0,2,2,2,2,0,0,0},{1,0,3,0,3,2,1,2},{2,3,0,3,0,1,2,1},{3,1,1,1,1,3,3,3},};
int i=0,j=0,x,n,m=1;
int c[500],d[500];
int b[1000];
printf("请输入序列对数:\n");
scanf("%d",&n);
printf("请输入输入序列:\n");
for(i=2*n-1;i>=0;i--)
{
if(i%2==1)
{
if(i!=1)
scanf("%d",&b[i-1]);
else
scanf("%d",&b[i]);
}
if(i%2==0)
{
if(i!=0)
scanf("%d",&b[i+1]);
else
scanf("%d",&b[i]);
}
}
for(x=0;x<5;x++)
{
i=b[2*x],j=b[2*x+1];
c[x]=a[z-1][2*(2*i+j)];
d[x]=a[z-1][2*(2*i+j)+1];
if(m%2==0)
{
//if(i==0&&j==0)
// z=5;
//if(i==0&&j==1)
// z=6;
//if(i==1&&j==0)
// z=7;
//if(i==1&&j==1)
// z=8;
z=2*i+j+5;
}
else if(z%2==1)
{
//if(i==0&&j==0)
// z=1;
//if(i==0&&j==1)
// z=2;
//if(i==1&&j==0)
// z=3;
//if(i==1&&j==1)
// z=4;
m=2*i+j+1;
}
}
printf("第1根天线的输出:\n");
for(i=0;i<n;i++)
{
printf("%d ",c[i]);
}
printf("\n");
printf("第2根天线的输出:\n");
for(i=0;i<n;i++)
{
printf("%d ",d[i]);
}
}
4、选做:推广到多种空时网格情况;尝试简单实现空时分组码。
空时分组码是一种在无线通信中使用的技术,用于在多个天线上发送数据流的多个副本,并利用各种接收的数据版本来提高数据传输的可靠性。 传输信号必须穿过具有散射,反射,折射等的潜在困难环境,然后可能被接收器中的热噪声进一步破坏,这意味着一些接收到的数据副本将比其他更好。这种冗余导致能够使用一个或多个接收到的副本来正确解码接收信号的机会更高。实际上,空时编码以最佳方式组合所接收信号的所有副本,以尽可能多地从每个副本中提取信息。
实验结果: