2psk匹配滤波器解调对应的matlab代码
时间: 2023-11-11 10:02:33 浏览: 96
2PSK的matlab仿真
以下是2PSK匹配滤波器解调的Matlab代码:
```matlab
% 设置参数
Fs = 10000; % 采样率
T = 1/Fs; % 采样间隔
t = 0:T:1-T; % 时间向量
fc = 1000; % 载波频率
Ac = 1; % 载波幅度
Eb = 1; % 符号能量
SNR = 5; % 信噪比
fc1 = 1000; % 符号1的载波频率
fc2 = 2000; % 符号2的载波频率
b = [0 1 0 1 1 0 1 0]; % 待调制的比特流
% 构造调制信号
carrier1 = Ac*cos(2*pi*fc1*t); % 符号1的载波信号
carrier2 = Ac*cos(2*pi*fc2*t); % 符号2的载波信号
symbols = b.*2-1; % 将比特流转换为BPSK符号
x = sqrt(Eb)*symbols; % 生成BPSK调制信号
tx_signal = x.*(symbols==1)*carrier1 + x.*(symbols==-1)*carrier2; % 生成二进制PSK调制信号
% 加入高斯噪声
rx_signal = awgn(tx_signal,SNR,'measured');
% 二进制PSK解调
matched_filter1 = flip(conj(carrier1)); % 构造符号1的匹配滤波器
matched_filter2 = flip(conj(carrier2)); % 构造符号2的匹配滤波器
r1 = conv(rx_signal,matched_filter1,'same'); % 符号1的匹配滤波器输出
r2 = conv(rx_signal,matched_filter2,'same'); % 符号2的匹配滤波器输出
dec_signal = (r1>r2)*1 + (r1<=r2)*-1; % 解调后的信号
% 绘制结果
subplot(3,1,1); plot(t,tx_signal); title('调制信号');
subplot(3,1,2); plot(t,rx_signal); title('接收信号');
subplot(3,1,3); plot(t,dec_signal); title('解调信号');
```
这段代码使用了匹配滤波器进行2PSK信号的解调。首先,生成了待调制的比特流,并使用BPSK调制生成了二进制PSK调制信号。接着,加入了指定信噪比的高斯噪声模拟信道传输。最后,使用符号1和符号2的匹配滤波器分别处理接收信号,得到两个匹配滤波器的输出,根据输出大小决定解调为1或-1。
阅读全文