先用MALAB产生16psk信号,利用希尔伯特变换构建他的解析信号,进一步得到星座图
时间: 2023-10-08 11:10:13 浏览: 109
基于MATLAB的多进制数字调制信号的矢量星座图分析
5星 · 资源好评率100%
下面是MATLAB产生16PSK信号并使用希尔伯特变换构建解析信号的示例代码:
```matlab
% 产生16PSK信号
N = 1000; % 信号长度
M = 16; % 码元数
k = log2(M); % 每个码元的比特数
% 生成随机比特流
dataIn = randi([0 1],N/k,k);
% 将比特流映射到星座图上
dataSym = bi2de(dataIn,'left-msb')';
dataSym = qammod(dataSym,M);
% 将星座图符号转化为连续信号
fs = 1000; % 采样率
t = 0:1/fs:N/k-1/fs; % 时间序列
dataSig = zeros(1,N);
dataSig(1:k:N) = real(dataSym);
dataSig(k/2:k:N) = imag(dataSym);
% 构建解析信号
dataSigHilbert = hilbert(dataSig);
dataSymHilbert = dataSym .* exp(1i*pi/4);
% 绘制星座图
figure;
subplot(2,1,1)
plot(dataSym,'o')
xlabel('实部')
ylabel('虚部')
title('原始星座图')
subplot(2,1,2)
plot(dataSymHilbert,'o')
xlabel('实部')
ylabel('虚部')
title('解析星座图')
```
在上面的代码中,首先产生了16PSK信号,然后使用hilbert()函数对信号进行希尔伯特变换,得到信号的解析信号。接着,将星座图符号乘以exp(1i*pi/4)得到解析星座图。最后,使用subplot()函数将原始星座图和解析星座图绘制在同一张图中。
需要注意的是,在构建解析信号时,我们将星座图符号乘以exp(1i*pi/4),这是因为16PSK星座图中每个符号的相位差为22.5度,而exp(1i*pi/4)的相位差也为22.5度。因此,将星座图符号乘以exp(1i*pi/4)后,解析星座图的相位差与原始星座图相同,但幅度为原来的两倍。
阅读全文