clc;clear all;
num_m=8; % 观察信号个数
num_s=4; % 源信号个数
fc=[61 63 65 67 69 71 73 75 79 ]*10^4;
f0=70*10^4; % 中心频率
fs=56*10^4; % 采样频率
% RB=10*10^3;nr=fs/RB; % 信息传输速率
RB1=20*10^3; % 符号速率
nr1=fs/RB1;
nn1=200; % 符号个数
t=0:(1/fs):((nr1*nn1-1)/fs);
correct1=0;correct2=0;correct3=0;correct4=0;correct5=0
%--------- 产生混合矩阵 -----------------------
signal_frequency=[fc(1) fc(2) fc(3) fc(4)];
Array_type=1; % 1 表示均匀线阵,
Ant_number=num_m; % 混合信号个数
Original_signal_number=num_s; % 源信号个数
signal_input_angle = [40 60 80 100 ]*pi/180; %%% 信号的入射角
d=3*10^8/f0/2; % 阵元间隔
A1=compound_matrix(Array_type,Ant_number,Original_signal_number,signal_input_angle,signal_frequency,d);
%----------------------------------
kk=0;
for SNR=0:2:20;
kk=kk+1;
correct1=0;
correct2=0;
correct3=0;
correct4=0;
correct5=0;
for c_num=1:200
in1=randint(1,nn1,2);
in2=randint(1,nn1,2);
in3=randint(1,nn1,4);
in4=randint(1,nn1,4);
sig1=pskmod(in1,2);sig1=repmat(sig1,nr1,1);sig1=sig1(:).';sig1=sig1.*exp(j*2*pi*fc(1).*t);
sig2=pskmod(in2,2);sig2=repmat(sig2,nr1,1);sig2=sig2(:).';sig2=sig2.*exp(j*2*pi*fc(2).*t);
sig3=pskmod(in3,4);sig3=repmat(sig3,nr1,1);sig3=sig3(:).';sig3=sig3.*exp(j*2*pi*fc(3).*t);
sig4=pskmod(in3,4);sig4=repmat(sig4,nr1,1);sig4=sig4(:).';sig4=sig4.*exp(j*2*pi*fc(4).*t);
X=A1*[sig1;sig2;sig3;sig4];
n_power=10^(-SNR/10); % 计算噪声功率
noise=sqrt(n_power/2)*(randn(num_m,nn1*nr1)+j*randn(num_m,nn1*nr1)); % 产生噪声
X=X+noise; % 加噪声
RXX=cov(X.'); % 求观察信号协方差矩阵
[u1,d1,v1]=svd(RXX); % 奇异值分解
lamda=diag(d1); % 取奇异值
min1=min(lamda);a=2*min1;
s_num_e3=source_num_est_IAIC(lamda,num_m,nn1*nr1,a);
if s_num_e3==num_s
correct3=correct3+1; % 统计正确估计的个数
end
s_num_e4=source_num_est_IMDL(lamda,num_m,nn1*nr1,a);
if s_num_e4==num_s
correct4=correct4+1; % 统计正确估计的个数
end
s_num_e1=source_num_est_AIC(lamda,num_m,nn1*nr1);
if s_num_e1==num_s
correct1=correct1+1; % 统计正确估计的个数
end
%
s_num_e2=source_num_est_MDL(lamda,num_m,nn1*nr1);
if s_num_e2==num_s
correct2=correct2+1; % 统计正确估计的个数
end
s_num_e5=source_num_est_MEVRC(lamda,num_m) ;
if s_num_e5==num_s
correct5=correct5+1; % 统计正确估计的个数
end
end
ratio1(kk)=correct1/200 ;% 正确识别率
ratio2(kk)=correct2/200 ;% 正确识别率
ratio3(kk)=correct3/200 ;% 正确识别率
ratio4(kk)=correct4/200;
ratio5(kk)=correct5/200;
end
figure;plot(0:2:20,ratio1,'*-');
hold on;plot(0:2:20,ratio2,'s-');
hold on;plot(0:2:20,ratio3,'d-');
hold on;plot(0:2:20,ratio4,'v-');
hold on;plot(0:2:20,ratio5,'o-');
xlabel('SNR/dB');
ylabel('估计准确率')
评论4