⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chaper3_2.m

📁 这是阵列信号处理的DOA估计学习的好例子!很值得借鉴的!
💻 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 + -