学习笔记之——数字载波调制及接收信号星座图(constellation diagram)

本博文仅仅为本人学习笔记,参考的地方,在下面给出了引用。

 

由于实际要传输的信号(基带信号)所占据的频带通信都是低频开始的,而通信信道往往都是带通的,要在这种情况进行通信就必须对基带信号进行调制,实现基带信号频谱的搬移,以适合实际信道的传输(即用基带信号对载波信号的某些参量进行控制,使载波的这些参量随基带信号的变化而变化)。而由于正弦信号简单,便于产生和接收,在大多数数字通信系统中,我们都选用正弦信号作为载波。利用正弦信号的幅度、频率、相位来携带原始数字基带信号,相应的分别称为调幅、调频、调相三种基本形式。这一个过程称为调制,相应的承载信息的高频信号就称为载波。

一个已调信号可以表示为:

数字调制是离散地改变载波信号,故数字调制信号也称为键控信号。三种调制的波形示意如下图所示

M进制的数字调制系统与二进制的系统类似,所不同的是M进制的数字载波调制信号的幅度、频率、相位或他们的某种组合有M种不同的形态。

数字翟柏调制传输系统的基本结构如下图所示。在调制前,先经过波形变换,使调制后输出的信号的频谱特性满足特定的要求。出来频率调制方式外,信号的载波调制过程包含两个步骤:1、符号映射,将1比特或若干比特构成一个码组映射为星座图上的某一位置对应的信号,不同的信号有不同的幅度和相位组合,相应的两个正交分量分别与两个正交的载波信号相乘,再相加,完成符号映射和上变频的调制操作

解调过程则对信号进行相反的处理,即进行信号的下变频和符合的解映射操作。同时还会包括信道估计俞信道均衡等过程。

上面第一条式子,可以写为:

星座图如下图所示

星座图有两根轴。水平X轴与同相载波相关,垂直Y轴与正交载波相关。图中每个点,可以包含4条信息。点在X轴的投影定义了同相成分的峰值振幅,点在Y轴的投影定义了正交成分的峰值振幅。点到原点的连线(向量)长度是该信号元素的峰值振幅(X成分和Y成分的组合),连线和X轴之间的角度是信号元素的相位。
 

 

参考资料

https://blog.csdn.net/zhaomininternational/article/details/51613075

 

  • 12
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
C++中数字信号星座转换可以通过以下步骤实现: 1. 定义一个复数结构体,包含实部和虚部两个成员变量。 ```c++ struct Complex { double real; double imag; }; ``` 2. 定义一个函数,用于将数字信号转换为星座。该函数接受一个复数数组作为输入参数,并返回一个包含星座所有点的复数数组。 ```c++ Complex* signalToConstellation(Complex* signal, int length) { // 计算信号的平均值 Complex avg = {0, 0}; for (int i = 0; i < length; i++) { avg.real += signal[i].real; avg.imag += signal[i].imag; } avg.real /= length; avg.imag /= length; // 将信号中心化 for (int i = 0; i < length; i++) { signal[i].real -= avg.real; signal[i].imag -= avg.imag; } // 计算信号的标准差 double stdDev = 0; for (int i = 0; i < length; i++) { stdDev += signal[i].real * signal[i].real + signal[i].imag * signal[i].imag; } stdDev = sqrt(stdDev / length); // 缩放信号 for (int i = 0; i < length; i++) { signal[i].real /= stdDev; signal[i].imag /= stdDev; } // 返回星座 return signal; } ``` 3. 在主函数中调用该函数,并输出星座所有点的实部和虚部。 ```c++ int main() { // 定义数字信号 Complex signal[] = {{1, 1}, {1, -1}, {-1, 1}, {-1, -1}}; // 转换为星座 Complex* constellation = signalToConstellation(signal, 4); // 输出星座 for (int i = 0; i < 4; i++) { std::cout << "Point " << i << ": (" << constellation[i].real << ", " << constellation[i].imag << ")" << std::endl; } return 0; } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值