用matlab对随机产生的四进制数字基带信号进行4ASK模拟调幅调制与相干解调,并绘制基带信号,载波信号,已调信号及解调信号的波形。载波信号为c(t)=cos(200πt)。
时间: 2024-02-03 16:15:10 浏览: 78
首先,随机产生一个四进制数字基带信号,假设长度为100:
```
bb = randi([0,3],1,100); % 产生0~3的随机整数
```
然后将其转换为二进制码,并将其映射为实数:
```
bb_bin = de2bi(bb,2,'left-msb'); % 二进制码
bb_real = bi2de(bb_bin,'left-msb')/3; % 映射为实数
```
接下来生成载波信号和调制信号:
```
fc = 50; % 载波频率
fs = 5000; % 采样频率
t = 0:1/fs:(length(bb_real)/fs-1/fs); % 时间序列
c = cos(2*pi*fc*t); % 载波信号
s = bb_real.*c; % 调制信号
```
进行相干解调,需要先生成一个与载波信号相同的参考信号:
```
ref = cos(2*pi*fc*t); % 参考信号
```
解调信号为调制信号和参考信号的乘积,并通过低通滤波器恢复基带信号:
```
r = s.*ref; % 解调信号
[b,a] = butter(6,2*fc/fs); % 6阶低通滤波器
bb_recovered = filter(b,a,r); % 恢复的基带信号
```
最后绘制波形图:
```
subplot(2,2,1)
plot(t,bb_real)
title('Baseband Signal')
xlabel('Time (s)')
ylabel('Amplitude')
subplot(2,2,2)
plot(t,c)
title('Carrier Signal')
xlabel('Time (s)')
ylabel('Amplitude')
subplot(2,2,3)
plot(t,s)
title('Modulated Signal')
xlabel('Time (s)')
ylabel('Amplitude')
subplot(2,2,4)
plot(t,bb_recovered)
title('Demodulated Signal')
xlabel('Time (s)')
ylabel('Amplitude')
```
完整代码如下:
```
% 随机产生四进制数字基带信号
bb = randi([0,3],1,100);
% 将其转换为二进制码,并将其映射为实数
bb_bin = de2bi(bb,2,'left-msb');
bb_real = bi2de(bb_bin,'left-msb')/3;
% 生成载波信号和调制信号
fc = 50; % 载波频率
fs = 5000; % 采样频率
t = 0:1/fs:(length(bb_real)/fs-1/fs); % 时间序列
c = cos(2*pi*fc*t); % 载波信号
s = bb_real.*c; % 调制信号
% 生成参考信号
ref = cos(2*pi*fc*t);
% 相干解调
r = s.*ref;
[b,a] = butter(6,2*fc/fs); % 6阶低通滤波器
bb_recovered = filter(b,a,r);
% 绘制波形图
subplot(2,2,1)
plot(t,bb_real)
title('Baseband Signal')
xlabel('Time (s)')
ylabel('Amplitude')
subplot(2,2,2)
plot(t,c)
title('Carrier Signal')
xlabel('Time (s)')
ylabel('Amplitude')
subplot(2,2,3)
plot(t,s)
title('Modulated Signal')
xlabel('Time (s)')
ylabel('Amplitude')
subplot(2,2,4)
plot(t,bb_recovered)
title('Demodulated Signal')
xlabel('Time (s)')
ylabel('Amplitude')
```
阅读全文