基于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

相关文章

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

poj 3169 spfa 差分约束

题意: 给n只牛,这些牛有些关系。 ml个关系:fr 与 to 牛间的距离要小于等于 cost。 md个关系:fr 与 to 牛间的距离要大于等于 cost。 隐含关系: d[ i ] <= d[ i + 1 ] 解析: 用以上关系建图,求1-n间最短路即可。 新学了一种建图的方法。。。。。。 代码: #include <iostream>#include

hdu4431麻将模拟

给13张牌。问增加哪些牌可以胡牌。 胡牌有以下几种情况: 1、一个对子 + 4组 3个相同的牌或者顺子。 2、7个不同的对子。 3、13幺 贪心的思想: 对于某张牌>=3个,先减去3个相同,再组合顺子。 import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.IOExcepti

POJ 1364差分约束

给出n个变量,m个约束公式 Sa + Sa+1 + .... + Sa+b < ki or > ki ,叫你判断是否存在着解满足这m组约束公式。 Sa + Sa+1   +   .+ Sa+b =  Sum[a+b] - Sum[a-1]  . 注意加入源点n+1 。 public class Main {public static void main(Strin

【每日一题】LeetCode 2181.合并零之间的节点(链表、模拟)

【每日一题】LeetCode 2181.合并零之间的节点(链表、模拟) 题目描述 给定一个链表,链表中的每个节点代表一个整数。链表中的整数由 0 分隔开,表示不同的区间。链表的开始和结束节点的值都为 0。任务是将每两个相邻的 0 之间的所有节点合并成一个节点,新节点的值为原区间内所有节点值的和。合并后,需要移除所有的 0,并返回修改后的链表头节点。 思路分析 初始化:创建一个虚拟头节点

嵌入式方向的毕业生,找工作很迷茫

一个应届硕士生的问题: 虽然我明白想成为技术大牛需要日积月累的磨练,但我总感觉自己学习方法或者哪些方面有问题,时间一天天过去,自己也每天不停学习,但总感觉自己没有想象中那样进步,总感觉找不到一个很清晰的学习规划……眼看 9 月份就要参加秋招了,我想毕业了去大城市磨练几年,涨涨见识,拓开眼界多学点东西。但是感觉自己的实力还是很不够,内心慌得不行,总怕浪费了这人生唯一的校招机会,当然我也明白,毕业

matlab读取NC文件(含group)

matlab读取NC文件(含group): NC文件数据结构: 代码: % 打开 NetCDF 文件filename = 'your_file.nc'; % 替换为你的文件名% 使用 netcdf.open 函数打开文件ncid = netcdf.open(filename, 'NC_NOWRITE');% 查看文件中的组% 假设我们想读取名为 "group1" 的组groupName