clc;
clear all;
close all;
warning off;
addpath 'func\'
%全局变量
parameters;
SNR0 = -20;
N0 = 1000;
y_2FSK = zeros(1,N0);
y_4FSK = zeros(1,N0);
y_8FSK = zeros(1,N0);
y_2PSK = zeros(1,N0);
y_4PSK = zeros(1,N0);
y_8PSK = zeros(1,N0);
%2FSK
y_2FSK = func_2FSK(N0);
%4FSK
y_4FSK = func_4FSK(N0);
%8FSK
y_8FSK = func_8FSK(N0);
%BPSK
y_2PSK = func_2PSK(N0);
%QPSK
y_4PSK = func_4PSK(N0);
%8PSK
y_8PSK = func_8PSK(N0);
%调制识别
y_2FSKn = func_add_noise(y_2FSK,SNR0);
y_4FSKn = func_add_noise(y_4FSK,SNR0);
y_8FSKn = func_add_noise(y_8FSK,SNR0);
y_2PSKn = func_add_noise(y_2PSK,SNR0);
y_4PSKn = func_add_noise(y_4PSK,SNR0);
y_8PSKn = func_add_noise(y_8PSK,SNR0);
ps = 1;
SNR1 =-12;
SNR2 =-16;
SNR3 =-20;
T = 0.001;
%信号带宽W
W = fs;
%采样频率
Fs = 2*W;
m = T*W;
n = 2*T*W;
%实际信噪比
snr1 = 10.^(SNR1/10);
snr2 = 10.^(SNR2/10);
snr3 = 10.^(SNR3/10);
pn =(1/snr1)*ps;
mu0 = n*pn;
sigma0 = sqrt(2*n)*pn;
mu = n*(pn+ps);
sigma = sqrt(2*n*(pn^2+2*pn*ps));
sig = 1;
%重复次数
NUM = 10000;
%能量检测判决门限
lambda =[-200:10:400];
for kk=1:1:length(lambda);
kk
ff =0;
dd =0;
ff1=0;
dd1=0;
ff2=0;
dd2=0;
for ii=1:1:NUM;
t=(kk-1)*n+1:kk*n;
init_phase=1/4*pi;
sig=2*sin(2*pi*W/Fs*t+init_phase);
noi1=randn(1,n);
noi1=sqrt(1/snr1)*noi1;
rec1=noi1+sig;
noi2=randn(1,n);
noi2=sqrt(1/snr2)*noi2;
rec2=noi2+sig;
noi3=randn(1,n);
noi3=sqrt(1/snr3)*noi3;
rec3=noi3+sig;
L = N0;
NFFT = 2^nextpow2(L);
Y1 = fft(rec1,NFFT);
Y2 = fft(rec2,NFFT);
Y3 = fft(rec3,NFFT);
Y1s2 = sqrt(2)*abs(Y1(1:NFFT/2))/2;
Y2s2 = sqrt(2)*abs(Y2(1:NFFT/2))/2;
Y3s2 = sqrt(2)*abs(Y3(1:NFFT/2))/2;
sum0_1=max(abs(xcorr(noi1,sig)));
sum0_2=max(abs(xcorr(noi2,sig)));
sum0_3=max(abs(xcorr(noi3,sig)));
sum1_1=max(Y1s2);
sum1_2=max(Y2s2);
sum1_3=max(Y3s2);
if(sum0_1>lambda(kk));
ff=ff+1;
end
if(sum1_1>lambda(kk));
dd=dd+1;
end
if(sum0_2>lambda(kk));
ff1=ff1+1;
end
if(sum1_2>lambda(kk));
dd1=dd1+1;
end
if(sum0_3>lambda(kk));
ff2=ff2+1;
end
if(sum1_3>lambda(kk));
dd2=dd2+1;
end
end
Pd_1(kk)=dd/NUM;
Pf_1(kk)=ff/NUM;
Pd_2(kk)=dd1/NUM;
Pf_2(kk)=ff1/NUM;
Pd_3(kk)=dd2/NUM;
Pf_3(kk)=ff2/NUM;
end
figure;
plot(Pf_1,Pd_1,'-o',Pf_2,Pd_2,'-s',Pf_3,Pd_3,'-*');
hold on;
grid on;
xlabel('P_{Fa}');
ylabel('P_{d}');
legend('匹配滤波检测,SNR=-12dB','匹配滤波检测,SNR=-16dB','匹配滤波检测,SNR=-20dB');
grid on;
hold on;
save r.mat Pf_1 Pf_2 Pf_3 Pd_1 Pd_2 Pd_3
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
1.版本:matlab2021a,包含仿真操作录像,操作录像使用windows media player播放。 2.领域:调制方式识别 3.内容:基于能量检测的调制方式识别算法MATLAB仿真,识别不同SNR下的2FSK,4FSK,8FSK和2PSK,4PSK,8PSK.输出不同SNR下的检测概率。 4.注意事项:注意MATLAB左侧当前文件夹路径,必须是程序所在文件夹位置,具体可以参考视频录。
资源推荐
资源详情
资源评论
收起资源包目录
基于能量检测的调制方式识别算法MATLAB仿真,识别不同SNR下的MFSK和MPSK.rar (13个子文件)
r.mat 6KB
main1.m 1KB
untitled.jpg 31KB
Runme.m 3KB
操作录像0040.avi 40.43MB
func
func_add_noise.m 274B
func_4PSK.m 577B
func_2PSK.m 372B
func_8FSK.m 503B
func_8PSK.m 802B
func_2FSK.m 411B
func_4FSK.m 457B
parameters.m 286B
共 13 条
- 1
资源评论
fpga和matlab
- 粉丝: 16w+
- 资源: 2563
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功