Matlab实现
时间: 2023-10-18 14:17:26 浏览: 38
好的,下面我将给出Matlab代码实现您所提出的问题。
1. 产生信源符号序列
```matlab
% 产生40000bit的二进制符号序列
bit_seq = randi([0,1],1,40000);
% 二进制序列转换为10进制
dec_seq = bi2de(reshape(bit_seq,4,[]).','left-msb');
% 10进制序列转换为16进制
hex_seq = dec2hex(dec_seq).';
% 16进制序列转换为符号
symbols = qammod(hex2dec(hex_seq),16);
```
2. 串并转换、星座映射
```matlab
% 显示星座图
scatterplot(symbols);
```
3. 脉冲成形
```matlab
% 定义脉冲成形滤波器
span = 10; % 滤波器长度
beta = 0.5; % 滚降系数
sps = 4; % 采样率调制因子
rolloff = 0.5; % 滚降因子
h = rcosdesign(rolloff,span,sps,'sqrt');
% 显示脉冲成形滤波器的传输函数
fvtool(h,'Analysis','freq');
% 上采样
upsampled = upsample(symbols,sps);
% 过脉冲成形滤波器
filtered = conv(upsampled,h);
% 去掉滤波器延迟
delay = span/2;
tx_signal = filtered(delay+1:end-delay);
```
4. 上变频
```matlab
% 定义正交调制载波
fc = 10000; % 载波频率为10kHz
I = cos(2*pi*fc*(0:length(tx_signal)-1)/100000);
Q = sin(2*pi*fc*(0:length(tx_signal)-1)/100000);
% 上变频
tx_signal = tx_signal.*I.' + imag(tx_signal).*Q.';
```
最后,绘制复基带信号的功率谱和星座图:
```matlab
% 显示星座图
scatterplot(tx_signal);
% 显示功率谱
pwelch(tx_signal,[],[],[],100000,'centered');
```