基于Matlab模拟LCMV在多个来波方向约束下波束形成

2023-10-28 13:50

本文主要是介绍基于Matlab模拟LCMV在多个来波方向约束下波束形成,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

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

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

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

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

⛄ 内容介绍

宽带信号波束形成是阵列信号处理问题中的一个重要研究方向,如何克服不同频率对应的波束响应会产生畸变问题一直是该领域研究的重点.本文基于Matlab模拟LCMV在多个来波方向约束下波束形成。​

⛄ 代码

%%%LCMV在多个来波方向约束下波束形成%%%

clc;clear;close all;ima=sqrt(-1);esp=0.01;

%%天线参数设定%%

N=16;                               %阵元数

d_lamda=0.5;                  %阵元间距与波长的比值

theta=-90:0.5:90;            %搜索范围确定

theta1=-10;                      %来波方向1

theta2=0;                          %来波方向2

theta3=40;                        %来波方向3

theta_jam=70;                  %干扰方向

L=512;                              %采样点数

%%%%%%%%%%%%%%%%%%%%%%%%%

%%信号形成%%

for k=1:L;

    a1=10*randn(1);

    a2=10*randn(1);

    a3=10*randn(1);

    ajam=10*randn(1);

    an=1;

    s(:,k)=a1*exp(ima*2*pi*d_lamda*sin(theta1*pi/180)*[0:N-1]')+...

            +a2*exp(ima*2*pi*d_lamda*sin(theta2*pi/180)*[0:N-1]')+...

            +a3*exp(ima*2*pi*d_lamda*sin(theta3*pi/180)*[0:N-1]');

    jam(:,k)=ajam*exp(ima*2*pi*d_lamda*sin(theta_jam*pi/180)*[0:N-1]');

    n(:,k)=an*(randn(N,1)+ima*randn(N,1));

end

%%%%%%%%%%%%%%%%%%%%%%%%%

%最优权矢量产生%

x=s+jam;

Rx=1/L*x*x';                          %求信号相关矩阵

R=pinv(Rx);                           %相关矩阵求逆

a1theta=exp(ima*2*pi*d_lamda*sin(theta1*pi/180)*[0:N-1]');

a2theta=exp(ima*2*pi*d_lamda*sin(theta2*pi/180)*[0:N-1]');

a3theta=exp(ima*2*pi*d_lamda*sin(theta3*pi/180)*[0:N-1]');

C=[a1theta a2theta a3theta];%方向矩阵

F=[1 1 1]';

Wopt=R*C*(inv(C'*R*C))*F;

%%%%%%%%%%%%%%%%%%%%%%%%%

%%最优波束形成%%

for m=1:length(theta);

    a=exp(ima*2*pi*d_lamda*sin(theta(m)*pi/180)*[0:N-1]');

    y(m)=Wopt'*a;

end

%%%%%%%%%%%%%%%%%%%%%%%%%

Y=20*log10(abs(y)/max(abs(y))+esp);

%%作图%%

plot(theta,Y);hold on;grid on;

axis([-90 90 -50 0]);

plot(theta1,-30:0,'.');

plot(theta2,-30:0,'.');

plot(theta3,-30:0,'.');

plot(theta_jam,-30:0,'.');

xlabel('\theta/o');

ylabel('Amplitude in dB');

title('LCMV准则下多个方向波束形成');

⛄ 运行结果

⛄ 参考文献

[1] 廖艳苹, 霍广. 一种新的宽带LCMV波束形成算法在近场环境下的应用[J].  2015.

[2] 张晓东. 基于MATLAB GUI的几种数字波束形成算法设计与仿真[J]. 舰船电子对抗, 2018, 41(5):5.

[3] 郭业才, 王婷, 王超. 基于对数谱估计的LCMV频率不变波束形成语音增强算法:, CN201810562313.4[P]. 2022.

[4] 杨梦琪, 秦云. 基于波束空间的四阶累积量LCMV波束形成算法[J]. 软件导刊, 2021, 020(009):83-87.

⛳️ 代码获取关注我

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

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

 

这篇关于基于Matlab模拟LCMV在多个来波方向约束下波束形成的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/293623

相关文章

Python自动化办公之合并多个Excel

《Python自动化办公之合并多个Excel》在日常的办公自动化工作中,尤其是处理大量数据时,合并多个Excel表格是一个常见且繁琐的任务,下面小编就来为大家介绍一下如何使用Python轻松实现合... 目录为什么选择 python 自动化目标使用 Python 合并多个 Excel 文件安装所需库示例代码

Java实现检查多个时间段是否有重合

《Java实现检查多个时间段是否有重合》这篇文章主要为大家详细介绍了如何使用Java实现检查多个时间段是否有重合,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录流程概述步骤详解China编程步骤1:定义时间段类步骤2:添加时间段步骤3:检查时间段是否有重合步骤4:输出结果示例代码结语作

Java判断多个时间段是否重合的方法小结

《Java判断多个时间段是否重合的方法小结》这篇文章主要为大家详细介绍了Java中判断多个时间段是否重合的方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录判断多个时间段是否有间隔判断时间段集合是否与某时间段重合判断多个时间段是否有间隔实体类内容public class D

linux下多个硬盘划分到同一挂载点问题

《linux下多个硬盘划分到同一挂载点问题》在Linux系统中,将多个硬盘划分到同一挂载点需要通过逻辑卷管理(LVM)来实现,首先,需要将物理存储设备(如硬盘分区)创建为物理卷,然后,将这些物理卷组成... 目录linux下多个硬盘划分到同一挂载点需要明确的几个概念硬盘插上默认的是非lvm总结Linux下多

mysqld_multi在Linux服务器上运行多个MySQL实例

《mysqld_multi在Linux服务器上运行多个MySQL实例》在Linux系统上使用mysqld_multi来启动和管理多个MySQL实例是一种常见的做法,这种方式允许你在同一台机器上运行多个... 目录1. 安装mysql2. 配置文件示例配置文件3. 创建数据目录4. 启动和管理实例启动所有实例

使用SQL语言查询多个Excel表格的操作方法

《使用SQL语言查询多个Excel表格的操作方法》本文介绍了如何使用SQL语言查询多个Excel表格,通过将所有Excel表格放入一个.xlsx文件中,并使用pandas和pandasql库进行读取和... 目录如何用SQL语言查询多个Excel表格如何使用sql查询excel内容1. 简介2. 实现思路3

SQL中的外键约束

外键约束用于表示两张表中的指标连接关系。外键约束的作用主要有以下三点: 1.确保子表中的某个字段(外键)只能引用父表中的有效记录2.主表中的列被删除时,子表中的关联列也会被删除3.主表中的列更新时,子表中的关联元素也会被更新 子表中的元素指向主表 以下是一个外键约束的实例展示

【C++】_list常用方法解析及模拟实现

相信自己的力量,只要对自己始终保持信心,尽自己最大努力去完成任何事,就算事情最终结果是失败了,努力了也不留遗憾。💓💓💓 目录   ✨说在前面 🍋知识点一:什么是list? •🌰1.list的定义 •🌰2.list的基本特性 •🌰3.常用接口介绍 🍋知识点二:list常用接口 •🌰1.默认成员函数 🔥构造函数(⭐) 🔥析构函数 •🌰2.list对象

usaco 1.2 Transformations(模拟)

我的做法就是一个一个情况枚举出来 注意计算公式: ( 变换后的矩阵记为C) 顺时针旋转90°:C[i] [j]=A[n-j-1] [i] (旋转180°和270° 可以多转几个九十度来推) 对称:C[i] [n-j-1]=A[i] [j] 代码有点长 。。。 /*ID: who jayLANG: C++TASK: transform*/#include<

poj 3159 (spfa差分约束最短路) poj 1201

poj 3159: 题意: 每次给出b比a多不多于c个糖果,求n最多比1多多少个糖果。 解析: 差分约束。 这个博客讲差分约束讲的比较好: http://www.cnblogs.com/void/archive/2011/08/26/2153928.html 套个spfa。 代码: #include <iostream>#include <cstdio>#i