matlab实现2ASK包络解调
时间: 2024-01-07 19:22:55 浏览: 110
以下是使用Matlab实现二进制ASK调制及包络检波解调的示例代码:
```matlab
% 生成二进制ASK调制信号
bitStream = [1 0 1 1 0 1 0 1]; % 二进制比特流
bitRate = 1000; % 比特率
carrierFreq = 10000; % 载波频率
time = 0:1/(bitRate*10):length(bitStream)/bitRate; % 时间序列
% 生成调制信号
modulatedSignal = zeros(1, length(time));
for i = 1:length(bitStream)
if bitStream(i) == 1
modulatedSignal((i-1)*bitRate*10+1:i*bitRate*10) = cos(2*pi*carrierFreq*time((i-1)*bitRate*10+1:i*bitRate*10));
end
end
% 添加高斯白噪声
SNR = 10; % 信噪比
noisySignal = awgn(modulatedSignal, SNR);
% 包络检波解调
envelope = abs(hilbert(noisySignal)); % 包络检波
threshold = max(envelope)/2; % 阈值
demodulatedSignal = envelope > threshold; % 解调信号
% 绘制结果
subplot(3,1,1);
plot(time, modulatedSignal);
title('Modulated Signal');
xlabel('Time');
ylabel('Amplitude');
subplot(3,1,2);
plot(time, noisySignal);
title('Noisy Signal');
xlabel('Time');
ylabel('Amplitude');
subplot(3,1,3);
plot(time, demodulatedSignal);
title('Demodulated Signal');
xlabel('Time');
ylabel('Amplitude');
```
这段代码首先生成了一个二进制比特流,然后根据比特流生成了ASK调制信号。接着添加了高斯白噪声,并进行包络检波解调。最后,通过绘图展示了调制信号、噪声信号和解调信号的波形。
阅读全文