matlab实现(1)产生信源符号序列:生成40000bit的二进制符号序列,采样率为100kHz,信息速率4Kbps (2)串并转换、星座映射:把(1)的比特序列,转换为16进制符号,并按16QAM调制映射为星座(注意:先表示为10进制数,再利用qammod做星座映射),得到复基带符号。画出发送端的星座图,注意,用scatterplot函数绘制星座图。 (3)脉冲成形:平方根升余弦脉冲成形,滚降系数为0.5; 绘制脉冲成形滤波器的传输函数,标出其带宽。对(2)产生的复基带符号上采样,过脉冲成形滤波器得到复基带信号。绘制复基带信号的功率谱,标出带宽,对比基带信号带宽和符号速率。(4)上变频:做正交调制,载波为10KHz(即,将(3)的基带信号调制到10KHz载波上)。 (5)绘制数字带通信号的功率谱,标出:带宽、中心频率、3dB带宽,和(3)中绘制的功率谱比较。 (6)过AWGN信道:上述(4)的信号经过AWGN信道,按Eb/n0为11dB加噪。绘制过信道后的功率谱图,标出:带宽、中心频率、3dB带宽。
时间: 2024-02-26 19:58:55 浏览: 33
好的,以下是对你的问题的回答:
(1)产生信源符号序列:
可以采用以下代码生成40000个二进制符号序列,其中每个符号的持续时间为250us(即采样率为100kHz,信息速率为4Kbps):
```
source_seq = randi([0,1],1,40000);
```
(2)串并转换、星座映射:
将二进制符号序列转换为16进制符号,然后进行16QAM调制映射,得到复基带符号,代码如下:
```
hex_seq = bi2de(reshape(source_seq,4,length(source_seq)/4).','left-msb').'; % 将二进制符号序列转换为16进制符号
mod_seq = qammod(hex_seq,16); % 进行16QAM调制映射,得到复基带符号
scatterplot(mod_seq); % 画出发送端的星座图
```
(3)脉冲成形:
采用平方根升余弦脉冲成形,滚降系数为0.5,其传输函数为:
```
h = rcosdesign(0.5, 6, 100,'sqrt');
freqz(h); % 绘制脉冲成形滤波器的传输函数
```
将复基带符号进行上采样,然后过脉冲成形滤波器得到复基带信号,代码如下:
```
upsampled_seq = upsample(mod_seq, 6); % 上采样
filtered_seq = filter(h, 1, upsampled_seq); % 过脉冲成形滤波器得到复基带信号
pwelch(filtered_seq,[],[],[],100e3,'centered'); % 绘制复基带信号的功率谱
```
(4)上变频:
进行正交调制,载波频率为10kHz,代码如下:
```
t = 0:1/100e3:(length(filtered_seq)-1)/100e3;
I = real(filtered_seq).*cos(2*pi*10e3*t);
Q = imag(filtered_seq).*sin(2*pi*10e3*t);
modulated_seq = I - Q; % 正交调制
```
(5)绘制数字带通信号的功率谱:
代码如下:
```
pwelch(modulated_seq,[],[],[],100e3,'centered'); % 绘制数字带通信号的功率谱
```
(6)过AWGN信道:
经过AWGN信道,按Eb/n0为11dB加噪,代码如下:
```
Eb = 10*log10(mean(abs(modulated_seq).^2)/4); % 计算每个符号的能量
N0 = Eb/11; % 计算噪声的功率谱密度
noise = sqrt(N0/2)*(randn(1,length(modulated_seq))+1i*randn(1,length(modulated_seq))); % 生成高斯白噪声
noisy_seq = modulated_seq + noise; % 加噪声
pwelch(noisy_seq,[],[],[],100e3,'centered'); % 绘制过信道后的功率谱图
```