chaper3_2.asv
来自「这是阵列信号处理的DOA估计学习的好例子!很值得借鉴的!」· ASV 代码 · 共 48 行
ASV
48 行
function sig_Ferier=chaper3_2(array_nums,sig_fai,sig_nums,SNR,flag)
%array_nums为阵列数目;
%sig_fai为各个信号的方位角,为矩阵且为弧度;
%sig_nums为信号的数目;
%SNR为信噪比;
%flag=0为不加噪声,这时所输入的信噪比没有意义,;
sig_fai=sig_fai*pi/180;
fai=linspace(-100,100,1000);%角度上的取值;
sig_Ferier=zeros(1,1000);
switch flag
case 0%表示不加噪声;
for k=1:1000
for i=1:sig_nums
angles_fai_rad=fai(k)*pi/180;%角度转换为弧度表示
deta_theta=sin(angles_fai_rad)-sin(sig_fai(i));%为相位差;
sig_Ferier(k)= sig_Ferier(k)+sin(array_nums*pi/2*deta_theta)/sin(pi/2*deta_theta)...
*exp(-j*(array_nums-1)*pi/2*deta_theta);
end
end
sig_Ferier=abs(sig_Ferier)/max(abs(sig_Ferier));
plot(fai,sig_Ferier)
case 1%表示加噪声情况下;
%%%%%%信号加噪声,且噪声为3dB时%%%%%%%
noise=randn(array_nums,1000);
for k=1:1000
for i=1:sig_nums
angles_fai_rad=fai(k)*pi/180;%角度转换为弧度表示
deta_theta=sin(angles_fai_rad)-sin(sig_fai(i));%为相位差;
sig_Ferier(k)= sig_Ferier(k)+1/sqrt(3)*sqrt(10.^(SNR/10))*sin(array_nums*pi/2*deta_theta)...
/sin(pi/2*deta_theta)*exp(-j*(array_nums-1)*pi/2*deta_theta);
%1/sqrt(3)*sqrt(10.^(SNR/10))为加入信噪比后换算出来的,三个信号的一次采样的平均功率为3
end
end
noise_Ferier=zeros(1,1000);
for k=1:1000
for i=1:array_nums
angles_fai_rad=fai(k)*pi/180;%角度转换为弧度表示
noise_Ferier(k)=noise_Ferier(k)+noise(i,k)*exp(-j*angles_fai_rad);%对加的噪声进行付氏变换
end
end
sig_add_noise_Ferier=abs(sig_Ferier+noise_Ferier)/max(abs(sig_Ferier+noise_Ferier));
plot(fai,10*log10(sig_add_noise_Ferier))
end
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?