你这里有两个程序,第二个程序与第一个实质上是一样的,区别就是信号与导向矢量的写法有点不同,这里我就不注释了。还有,我下面附了一段我自己的写的程序,里面有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 AttributesX 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 程序求解释等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)