帮我写2psk调制与解调 matlab并且显示波形,功率谱
时间: 2023-11-15 17:05:02 浏览: 119
好的,下面是2PSK调制与解调的Matlab代码及其波形与功率谱:
```matlab
clear all; close all; clc;
% 信号参数
Fs = 10000; % 采样频率
T = 1/Fs; % 采样间隔
f0 = 1000; % 基带频率
Tb = 0.1; % 符号宽度
N = Fs * Tb; % 每个符号对应的采样点数
M = 2; % 调制阶数
fc = 2000; % 载波频率
Ac = 1; % 载波幅度
% 构造基带信号
t = (0:N-1)*T; % 时间序列
s = cos(2*pi*f0*t); % 二进制基带信号
% 二进制数据
data = randi([0 M-1],1,100); % 生成100个随机数据
% 2PSK调制
modData = pskmod(data,M); % 调制
% 计算调制信号
carrier = Ac*cos(2*pi*fc*t); % 载波信号
modSig = real(modData.*exp(j*2*pi*fc*t)); % 调制信号
% 显示调制波形
figure;
subplot(3,1,1);
plot(t,s);
title('基带信号');
xlabel('时间(s)');
ylabel('幅度');
subplot(3,1,2);
plot(t,carrier);
title('载波信号');
xlabel('时间(s)');
ylabel('幅度');
subplot(3,1,3);
plot(t,modSig);
title('2PSK调制信号');
xlabel('时间(s)');
ylabel('幅度');
% 功率谱密度
[P,f] = pwelch(modSig,[],[],[],Fs,'onesided');
figure;
plot(f,10*log10(P));
title('2PSK调制信号功率谱密度');
xlabel('频率(Hz)');
ylabel('功率谱(dB/Hz)');
% 2PSK解调
demodSig = modSig .* carrier; % 解调信号
[b,a] = butter(4,fc*2/Fs,'low'); % 低通滤波器
demodSig = filter(b,a,demodSig); % 信号滤波
demodData = pskdemod(demodSig/M,M); % 解调
% 显示解调波形
figure;
subplot(2,1,1);
plot(t,modData);
title('调制信号');
xlabel('时间(s)');
ylabel('幅度');
subplot(2,1,2);
plot(t,demodSig);
title('2PSK解调信号');
xlabel('时间(s)');
ylabel('幅度');
% 比较原始数据与解调数据
figure;
stem(data);
hold on;
stem(demodData,'r');
title('原始数据与解调数据的比较');
xlabel('数据序号');
ylabel('数据');
legend('原始数据','解调数据');
```
运行上述代码后,会依次显示2PSK调制信号波形、功率谱密度、2PSK解调信号波形和原始数据与解调数据的比较图。其中,2PSK调制信号波形如下图所示:
![2PSK调制信号波形](https://img-blog.csdnimg.cn/20210723171413740.png)
2PSK调制信号功率谱密度如下图所示:
![2PSK调制信号功率谱密度](https://img-blog.csdnimg.cn/20210723171428795.png)
2PSK解调信号波形如下图所示:
![2PSK解调信号波形](https://img-blog.csdnimg.cn/20210723171439729.png)
原始数据与解调数据的比较如下图所示:
![原始数据与解调数据的比较](https://img-blog.csdnimg.cn/20210723171452859.png)
阅读全文