MATLAB 程序详解(关于波束形成)

MATLAB 程序详解(关于波束形成),第1张

你这里有两个程序,第二个程序与第一个实质上是一样的,区别就是信号与导向矢量的写法有点不同,这里我就不注释了。还有,我下面附了一段我自己的写的程序,里面有SIM算法。G-S正交化算法等。是基于圆阵形式的,你的算法是基于线阵的,他们程序上的区别在于导向矢量的不同。我的算法是某项目中的,保证好使。建议学习波束形成技术,注意把程序分块,例如分成,求导向矢量;最优权值;形成波束等等。

程序如下:

4单元均匀线阵自适应波束形成图

clear

clc

format long;

v=1;

M=4;

N=1000;%%%%%%%快拍数

f0=2110^3;%%%%%%%%%%%信号与干扰的频率

f1=1110^3;

f2=1510^3;

omiga0=2pif0;%%%%%%%信号与干扰的角频率

omiga1=2pif1;

omiga2=2pif2;

sita0=08; %信号方向

sita1=04; %干扰方向1

sita2=21; %干扰方向2

for t=1:N %%%%%%%%%%%%信号

adt(t)=sin(omiga0t/(Nf0));

a1t(t)=sin(omiga1t/(Nf1));

a2t(t)=sin(omiga2t/(Nf2));

end

for i=1:M %%%%%%%%%%%%信号的导向矢量:线阵的形式

ad(i,1)=exp(j(i-1)pisin(sita0));

a1(i,1)=exp(j(i-1)pisin(sita1));

a2(i,1)=exp(j(i-1)pisin(sita2));

end

R=zeros(M,M);

for t=1:N

x=adt(t)ad+a1t(t)a1+a2t(t)a2; %阵列对信号的完整响应

R=R+xx';%信号的协方差矩阵

end

R=R/N;%%%%%%%%%协方差矩阵,所有快拍数的平均

miu=1/(ad'inv(R)ad);%%%%%%这个貌似是LMS算法的公式,具体我记不太清,这里是求最优权值,根据这个公式求出,然后加权

w=miuinv(R)ad;

%%%%%%形成波束%%%%%%%%%%%%%%%%%%%

for sita=0:pi/100:pi

for i=1:M

x_(i,1)=exp(j(i-1)pisin(sita));

end

y(1,v)=w'x_;%%%%%%%对信号进行加权,消除干扰

v=v+1;

end

y_max=max(y(:));%%%%%%%%%%%%%%%归一化

y_1=y/y_max;

y_db=20log(y_1);

sita=0:pi/100:pi;

plot(sita,y)

Xlabel(‘sitaa’)

Ylabel(‘天线增益db’)

4单元均匀线阵自适应波束形成

目标

clear

clc

format long;

v=1;

M=4;阵元数

N=100;

f0=2110^3;

omiga0=2pif0;

sita0=06;%信号方向

for t=1:N

adt(t)=sin(omiga0t/(Nf0));

end

for i=1:M

ad(i,1)=exp(j(i-1)pisin(sita0));

end

R=zeros(4,4);

r=zeros(4,1);

for t=1:N

x=adt(t)ad;

R=R+xx';

end

R=R/N;

miu=1/(ad'inv(R)ad);

w=miuinv(R)ad;

for sita=0:pi/100:pi/2

for i=1:M

a(i,1)=exp(j(i-1)pisin(sita));

end

y(1,v)=w'a;

v=v+1;

end

sita=0:pi/100:pi/2;

plot(sita,y)

xlabel('sita')

ylabel('天线增益’)

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

%%%%%%%%%我的程序%%%%%%%%%%%%%%%

function jieshousignal

%期望信号数:1个

%干扰信号数:4个

%信噪比已知

%干燥比已知

%方位角已知

clc;

clear all;

close all;

%//参数设置===========================================

>

反之holdoff,表示打开这个之后,每次画图,删除以前的图,

在matlab中用wavefast函数处理

第一条语句中显示s3的为512512的矩阵 灰度值表格在f

第二条语句中 我看了一下C的值,是一个1行271999的矩阵 矩阵第一个值是近似值 第二个是水平分量值 第三个是垂直分量值 第四个是对角分量值 这些分量值都是怎么算出来的,这一点我没有看明白

s是一个(n+2)2的矩阵

matlab 程序的文件代码是以m文件的形式呈现的。将matlab代码编写进m文件内然后运行即可。

例子:

建立一个 helloworldm

文件内包括内容如下:

fprintf('Hello World!');

使用快捷键F5直接运行,然后可以在控制台下看到打印的:

Hello World!

我调试了下 错误出在第七行

我把前六行各变量的值给你列出来,你看一下,为什么会出现这样的错误

 Name      Size            Bytes  Class     Attributes

  X         3x4                96  double              

  Y         2x4                64  double              

  eps       1x1                 8  double              

  m         1x1                 8  double              

  n         1x1                 8  double              

  s         1x1                 8  double

对于第七行

>> zeros(1,n)

ans =

     0     0     0     0

>> epsones(1,m+s)

ans =

   10e-10 

    10000    10000    10000    10000    10000

放在一个m文件中即可,但还需要你自己给出初始值,上下限等,不然结果会令你很失望

function [] = cxd()

clear;

clc;

%lb=[0 495];

%ub=[10 522];

[x,fval]=fmincon(@myfun,[1;1],[],[],[],[],[],[],@mycon2) %%%% 主函数

function [c,ceq]=mycon2(x)

c=[x(2)-5200;

2x(2)/1000-600810^-3;

2+00015x(2)-59910^-3;

135(x(2)+600810^-3-2)/(599x(2)10^-3-2)-1863];

ceq=pi(x(2)^3/12+x(1)x(2)^2/4)-7510^10;

function f=myfun(x)

e=10;

f=785pix(1)(x(2)+600810^-3x(2))600810^-3x(2)10^-6+54165pi59910^-3x(2)(x(2)+59910^-3x(2))^210^-6;

1、A=pi/3[0:6]: 产生0°、60°、120°360°共7个角度值。

2、rexp(iy)是一个复数的指数表达方式,对应平面中的一个点,设为Z,相应的y为向量OZ与X轴正向的夹角,r为向量OZ的模。

因此plot(rexp(iA),'k','linewidth',2);表示在平面上依次绘制7个点,并连线,连线宽度为2,颜色为'k'。最终图形g1为一正6边形。

3、real(rexp(iA))、imag(rexp(iA))分别取出6边形顶点的x、y坐标值(对应于复数的实部real、虚部imag)。然后用fill函数填充区域,set(g1,'FaceColor',[1,05,0])设置颜色。

4、g2与g1大同小异,只是半径rc、角度aa与g1不同。由于所有点的半径都为rc,因此g2为图形为圆。

5、text(0,0,'1','fontsize',10);在圆点处添加数字1。

这是我的理解,供你参考。

以上就是关于MATLAB 程序详解(关于波束形成)全部的内容,包括:MATLAB 程序详解(关于波束形成)、matlab程序画图、MATLAB 程序求解释等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10078180.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存