【压缩感知】基于压缩感知理论的窄带信号DOA估计算法研究附matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

🍎个人主页:Matlab科研工作室

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

智能优化算法       神经网络预测       雷达通信       无线传感器        电力系统

信号处理              图像处理               路径规划       元胞自动机        无人机 

⛄ 内容介绍

阵列信号波达方向(Direction ofArrival,DOA)估计是阵列信号处理领域中主要研究内容之一,广泛应用于军事及民用领域。基于压缩感知理论的稀疏重构算法的阵列信号DOA估计具有高分辨率的特点,而且其特殊的重构方式使其具有天然解相干的能力。 针对窄带信号DOA估计问题,本文应用SSOMP(SVD-SOMP)DOA估计算法。

⛄ 部分代码

clc

clear all

close all

% # of antennas

Nt = 256;

Nr = 64;

sqrtNt = sqrt(Nt);

sqrtNr = sqrt(Nr);

% # of RF chains

NtRF = 4;

NrRF = 4;

% # of departed(arrived) rays

Ncl = 8;

Nray = 10;

% Angle Spread (std.)

std = pi/24;

% SNR

sigma_n = 1;                       % 0dB

rhodB = -40 : 4 : 0;

rho = 10.^(rhodB/10);

I1 = zeros(1000, length(rho));     % SS (Spatially Sparse) / Ns = 1

I2 = zeros(1000, length(rho));     % SS (Spatially Sparse) / Ns = 2

I3 = zeros(1000, length(rho));     % SS (Spatially Sparse) / Ns = 4

I4 = zeros(1000, length(rho));     % Unconstrained / Ns = 1

I5 = zeros(1000, length(rho));     % Unconstrained / Ns = 2

I6 = zeros(1000, length(rho));     % Unconstrained / Ns = 4

for i = 1 : length(rho)

    for l = 1 : 1000

        Atcell = ArrayResponse_cell(sqrtNt, Ncl, Nray, std);

        Arcell = ArrayResponse_cell(sqrtNr, Ncl, Nray, std);

        

        At = cell2mat(Atcell);

        Ar = cell2mat(Arcell);

        

        % CHANNEL Formation (Lines 39 ~ 51)

        H = zeros(Nr, Nt);

        

        for p = 1 : Ncl

            Atmat = Atcell{1,p};

            Armat = Arcell{1,p};

    

            for q = 1 : Nray

                alpha = sqrt(1/2) * (randn(1,1) + 1i * randn(1,1));

        

                H = H + alpha * Armat(:,q) * Atmat(:,q)';

            end

        

        end

        

        H = (sqrt(Nt * Nr) / norm(H, 'fro')) * H;

        

        % SS - Spatial Sparse Precoding / Decoding

        I1(l,i) = SS(1, NtRF, NrRF, H, At, Ar, sigma_n, rho(i));

        I2(l,i) = SS(2, NtRF, NrRF, H, At, Ar, sigma_n, rho(i));

        I3(l,i) = SS(4, NtRF, NrRF, H, At, Ar, sigma_n, rho(i));

        % unconstrained - Unconstrained Precoding / Decoding

        I4(l,i) = unconstrained (1, H, sigma_n, rho(i));

        I5(l,i) = unconstrained (2, H, sigma_n, rho(i)); 

        I6(l,i) = unconstrained (4, H, sigma_n, rho(i)); 

    end

end

I1mean = mean(I1);

I2mean = mean(I2);

I3mean = mean(I3);

I4mean = mean(I4);

I5mean = mean(I5);

I6mean = mean(I6);

x = plot(rhodB, I1mean, rhodB, I2mean, rhodB, I3mean, rhodB, I4mean, rhodB, I5mean, rhodB, I6mean);

x(1).LineWidth = 2;

x(2).LineWidth = 2;

x(3).LineWidth = 2;

x(4).LineWidth = 2;

x(5).LineWidth = 2;

x(6).LineWidth = 2;

x(1).Marker = 'o';

x(2).Marker = 'o';

x(3).Marker = 'o';

x(4).Marker = 's';

x(5).Marker = 's';

x(6).Marker = 's';

legend('SSOMP Ns=1', 'SSOMP Ns=2', 'SSOMP Ns=4', 'Full-Digital Ns=1', 'Full-Digital Ns=2', 'Full-Digital Ns=4', 'Location', 'northwest');

title('SSOMP vs Full-Digital');

xlabel('SNR (dB)');

ylabel('Spectral Efficiency (bits/s/Hz)');

grid on;

⛄ 运行结果

⛄ 参考文献

⛳️ 代码获取关注我

❤️部分理论引用网络文献,若有侵权联系博主删除

❤️ 关注我领取海量matlab电子书和数学建模资料

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值