📄 chaper3_2.m
字号:
function sig_Ferier=chaper3_2(array_nums,sig_fai,sig_nums,SNR,flag)
%array_nums为阵列数目;
%sig_fai为各个信号的方位角,为矩阵表示形式且为弧度;
%sig_nums为信号的数目;
%SNR为信噪比;
%flag=0为不加噪声,这时所输入的信噪比没有意义,程序中输入为SNR为0;
%flag=1,表示加了噪声
sig_fai=sig_fai*pi/180;
fai=linspace(-100,100,1000);%角度上的取值;
sig_Furier=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_Furier(k)= sig_Furier(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_Furier=abs(sig_Furier)/max(abs(sig_Furier));
plot(fai,sig_Furier)
case 1%表示加噪声情况下;
%%%%%%信号加噪声,且噪声为3dB时%%%%%%%
noise=randn(array_nums,1000);
for k=1:1000
for n=1:sig_nums
angles_fai_rad=fai(k)*pi/180;%角度转换为弧度表示
deta_theta=sin(angles_fai_rad)-sin(sig_fai(n));%为相位差;
sig_Furier(k)= sig_Furier(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_Furier=zeros(1,1000);
for k=1:1000
for n=1:array_nums
angles_fai_rad=fai(k)*pi/180;%角度转换为弧度表示
noise_Furier(k)=noise_Furier(k)+noise(n,k)*exp(-j*(n-1)*angles_fai_rad);%对加的噪声进行付氏变换
end
end
sig_add_noise_Furier=abs(sig_Furier+noise_Furier)/max(abs(sig_Furier+noise_Furier));
plot(fai,(sig_add_noise_Furier))
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -