导航:首页 > 源码编译 > matlabgs算法

matlabgs算法

发布时间:2023-01-05 12:25:49

① matlab的算法有哪些急用!谢谢啊!

MATLAB 产品族可以用来进行以下各种工作:
● 数值分析
● 数值和符号计算
● 工程与科学绘图
● 控制系统的设计与仿真
● 数字图像处理 技术
● 数字信号处理 技术
● 通讯系统设计与仿真
● 财务与金融工程
MATLAB 的应用范围非常广,包括信号和图像处理、通讯、控制系统设计、测试和测量、财务建模和分析以及计算生物学等众多应用领域。附加的工具箱(单独提供的专用 MATLAB 函数集)扩展了 MATLAB 环境,以解决这些应用领域内特定类型的问题。
matlab特点
●此高级语言可用于技术计算
●此开发环境可对代码、文件和数据进行管理
●交互式工具可以按迭代的方式探查、设计及求解问题
●数学函数可用于线性代数、统计、傅立叶分析、筛选、优化以及数值积分等
●二维和三维图形函数可用于可视化数据
●各种工具可用于构建自定义的图形用户界面
●各种函数可将基于MATLAB的算法与外部应用程序和语言(如 C、C++、Fortran、Java、COM 以及 Microsoft Excel)集成
MATLAB的优势
(1)友好的工作平台和编程环境
MATLAB由一系列工具组成。这些工具方便用户使用MATLAB的函数和文件,其中许多工具采用的是图形用户界面。包括MATLAB桌面和命令窗口、历史命令窗口、编辑器和调试器、路径搜索和用于用户浏览帮助、工作空间、文件的浏览器。随着MATLAB的商业化以及软件本身的不断升级,MATLAB的用户界面也越来越精致,更加接近Windows的标准界面,人机交互性更强,操作更简单。而且新版本的MATLAB提供了完整的联机查询、帮助系统,极大的方便了用户的使用。简单的编程环境提供了比较完备的调试系统,程序不必经过编译就可以直接运行,而且能够及时地报告出现的错误及进行出错原因分析。
(2)简单易用的程序语言
Matlab一个高级的矩阵/阵列语言,它包含控制语句、函数、数据结构、输入和输出和面向对象编程特点。用户可以在命令窗口中将输入语句与执行命令同步,也可以先编写好一个较大的复杂的应用程序(M文件)后再一起运行。新版本的MATLAB语言是基于最为流行的C++语言基础上的,因此语法特征与C++语言极为相似,而且更加简单,更加符合科技人员对数学表达式的书写格式。使之更利于非计算机专业的科技人员使用。而且这种语言可移植性好、可拓展性极强,这也是MATLAB能够深入到科学研究及工程计算各个领域的重要原因。
(3)强大的科学计算机数据处理能力
MATLAB是一个包含大量计算算法的集合。其拥有600多个工程中要用到的数学运算函数,可以方便的实现用户所需的各种计算功能。函数中所使用的算法都是科研和工程计算中的最新研究成果,而前经过了各种优化和容错处理。在通常情况下,可以用它来代替底层编程语言,如C和C++ 。在计算要求相同的情况下,使用MATLAB的编程工作量会大大减少。MATLAB的这些函数集包括从最简单最基本的函数到诸如矩阵,特征向量、快速傅立叶变换的复杂函数。函数所能解决的问题其大致包括矩阵运算和线性方程组的求解、微分方程及偏微分方程的组的求解、符号运算、傅立叶变换和数据的统计分析、工程中的优化问题、稀疏矩阵运算、复数的各种运算、三角函数和其他初等数学运算、多维数组操作以及建模动态仿真等。
(4)出色的图形处理功能

图形处理功能 MATLAB自产生之日起就具有方便的数据可视化功能,以将向量和矩阵用图形表现出来,并且可以对图形进行标注和打印。高层次的作图包括二维和三维的可视化、图象处理、动画和表达式作图。可用于科学计算和工程绘图。新版本的MATLAB对整个图形处理功能作了很大的改进和完善,使它不仅在一般数据可视化软件都具有的功能(例如二维曲线和三维曲面的绘制和处理等)方面更加完善,而且对于一些其他软件所没有的功能(例如图形的光照处理、色度处理以及四维数据的表现等),MATLAB同样表现了出色的处理能力。同时对一些特殊的可视化要求,例如图形对话等,MATLAB也有相应的功能函数,保证了用户不同层次的要求。另外新版本的MATLAB还着重在图形用户界面(GUI)的制作上作了很大的改善,对这方面有特殊要求的用户也可以得到满足。
(5)应用广泛的模块集合工具箱
MATLAB对许多专门的领域都开发了功能强大的模块集和工具箱。一般来说,它们都是由特定领域的专家开发的,用户可以直接使用工具箱学习、应用和评估不同的方法而不需要自己编写代码。目前,MATLAB已经把工具箱延伸到了科学研究和工程应用的诸多领域,诸如数据采集、数据库接口、概率统计、样条拟合、优化算法、偏微分方程求解、神经网络、小波分析、信号处理、图像处理、系统辨识、控制系统设计、LMI控制、鲁棒控制、模型预测、模糊逻辑、金融分析、地图工具、非线性控制设计、实时快速原型及半物理仿真、嵌入式系统开发、定点仿真、DSP与通讯、电力系统仿真等,都在工具箱(Toolbox)家族中有了自己的一席之地。
(6)实用的程序接口和发布平台
新版本的MATLAB可以利用MATLAB编译器和C/C++数学库和图形库,将自己的MATLAB程序自动转换为独立于MATLAB运行的C和C++代码。允许用户编写可以和MATLAB进行交互的C或C++语言程序。另外,MATLAB网页服务程序还容许在Web应用中使用自己的MATLAB数学和图形程序。MATLAB的一个重要特色就是具有一套程序扩展系统和一组称之为工具箱的特殊应用子程序。工具箱是MATLAB函数的子程序库,每一个工具箱都是为某一类学科专业和应用而定制的,主要包括信号处理、控制系统、神经网络、模糊逻辑、小波分析和系统仿真等方面的应用。
(7)应用软件开发(包括用户界面)
在开发环境中,使用户更方便地控制多个文件和图形窗口;在编程方面支持了函数嵌套,有条件中断等;在图形化方面,有了更强大的图形标注和处理功能,包括对性对起连接注释等;在输入输出方面,可以直接向Excel和HDF5进行连接。

② 关于matlab的算法

说清楚你的问题

③ MATLAB中的ga算法,如何如何获得每一步计算数值

试试以下方法(忘了在网上哪里找的),先调出来图像,
比如options.PlotFcns={ @gaplotbestf},然后取句柄,
h=findobj(gcf,'Type','Line'); %获取当前图窗的handle
x = get(h,'xdata'); % 坐标数据cell数据
y = get(h,'ydata');
x,y可能是cell型,想要的数据在x{ }, y{ }里取(比如,打开x,y,查看x,y与你迭代步数相同的维度的两个cell元素就有最佳值和均值等数据)

④ 跪求!!SLM衍射特性研究及衍射光学元件设计实验的思路以及思想。。 另外,跪求GS算法的介绍!!

SLM研究DOE很简单的一个做法就是将液晶屏视为可编程的蚀刻板,通过matlab计算各种灰度图,比如模拟退火算法\模拟轴椎透镜等, 通过不同的灰度图改变SLM液晶分子扭角获得不同衍射效果, 利用CCD对出射光斑进行能量分析, 类似高斯光变为平顶光的效果,DOE能实现,SLM也同样能实现,类似的实验在瑞光空间光调制器的网站中有介绍

⑤ 有谁用matlab做过聚类算法

分类算法,参数分别为G(相似度矩阵),r(邻居门限),lambda(类门限),返回值A,一个cell数组,每个元素是一个向量,包含了一个类的所有元素。
function A=BFSN_Algorithm(G,r,lambda)
%广度优先搜索邻居的聚类算法实现
%G为相似度矩阵
%r和lambda为参数
%r为邻居门限,相似度大于r即为邻居
%lambda门限
%未分类元素对于某类的所有元素,如果是邻居则令X(i)=1,否则为0.i为类元素的下标
%对X求和并除以类元素个数,若此值大于lambda门限,则该未分类元素属于这类
%打开计时器
tic
%A为聚类结果
A={};
%k为分类计数
k=1;
%n为待分类元素个数
n=size(G,1);
%构建元素向量
member=1:n;
%只要member中还有未分类的元素就继续循环
while numel(member)~=0
%从member中取出一个元素a
a=member(1);
%新建空类A并将a送入Ak类
Ak=a;
%从member中删除a
member(1)=[];
%扫描member中的所有元素
%queue为广度优先搜索使用的队列
%将a送入queue中
queue=a;
%已访问过的元素
visited=zeros(1,n);
%如果队列非空说明还有没有检验过的邻居
while numel(queue)~=0
%一个元素出队
p=queue(1);
queue(1)=[];
%扫描member中所有元素
for count=1:numel(member)
%用member(count)作为待分类的元素
%p是从queue中取出,找到p的所有未访问邻居
if G(p,member(count))>r && visited(member(count))==0
%满足if的member(count)是未访问过的邻居
%放入queue中
queue=[queue member(count)];
%member(count)已经访问过了
visited(member(count))=1;
if sum(G(member(count),Ak)>r)/numel(Ak)>=lambda
%满足if的元素属于Ak类,根据lambda门限判断
Ak=[Ak member(count)];
member(count)=-1;
end
end
end
%删除member中已分类的元素
member(member==-1)=[];
end
%将Ak保存在cell数组A的第k个位置
A{k}=Ak;
%k指向下一个分类
k=k+1;
end
%关闭计时器
toc
由于编写的时候比较仓促,应该有很大的优化的余地。
plotAllClass.m
绘制已分类数据的图形,参数:data元素数据,A分类表,一个cell数组,调用BFSN_Algorithm得到。
function plotAllClass(data,A)
%data:m行2列的矩阵,m行代表m个元素,
%第一列为每个元素的横坐标
%第二列为每个元素的纵坐标
%A为分类列表,
%有c个元素的cell数组
%每个元素是一个向量
%包含了一个分类的所有元素在data中的行
%n=类别数
n=numel(A);
%绘图图案列表
style=['r*';'g*';'b*';'c*';'m*';'y*';'k*';...
'r+';'g+';'b+';'c+';'m+';'y+';'k+';...
'rs';'gs';'bs';'cs';'ms';'ys';'ks';...
'rp';'gp';'bp';'cp';'mp';'yp';'kp';...
'rh';'gh';'bh';'ch';'mh';'yh';'kh';...
'rd';'gd';'bd';'cd';'md';'yd';'kd';...
'ro';'go';'bo';'co';'mo';'yo';'ko';...
'rx';'gx';'bx';'cx';'mx';'yx';'kx';...
'rv';'gv';'bv';'cv';'mv';'yv';'kv';...
'r<';'g<';'b<';'c<';'m<';'y<';'k<';...
'r>';'g>';'b>';'c>';'m>';'y>';'k>';...
'r^';'g^';'b^';'c^';'m^';'y^';'k^';...
'r.';'g.';'b.';'c.';'m.';'y.';'k.'];
figure;
hold on;
for count=1:n
plot(data(A{count},1),data(A{count},2),style(count,:));
end
hold off;
这个函数最多能够绘制91个类别,如果有超过91个类,函数会出错。
show.m
包含了一个完整的流程,包括数据生成,相似度矩阵生成,分类,类别绘制。
%show.m
data=rand(200,2);
figure;
plot(data(:,1),data(:,2),'+');
G=createSimiR(data);
A=BFSN_Algorithm(G,0.95,0.95);
plotAllClass(data,A);

⑥ matlab最优化算法有哪些

matlab最优化程序包括

无约束一维极值问题 进退法 黄金分割法 斐波那契法 牛顿法基本牛顿法 全局牛顿法 割线法 抛物线法 三次插值法 可接受搜索法 Goidstein法 Wolfe.Powell法

单纯形搜索法 Powell法 最速下降法 共轭梯度法 牛顿法 修正牛顿法 拟牛顿法 信赖域法 显式最速下降法, Rosen梯度投影法 罚函数法 外点罚函数法

内点罚函数法 混合罚函数法 乘子法 G-N法 修正G-N法 L-M法 线性规划 单纯形法 修正单纯形法 大M法 变量有界单纯形法 整数规划 割平面法 分支定界法 0-1规划 二次规划

拉格朗曰法 起作用集算法 路径跟踪法 粒子群优化算法 基本粒子群算法 带压缩因子的粒子群算法 权重改进的粒子群算法 线性递减权重法 自适应权重法 随机权重法

变学习因子的粒子群算法 同步变化的学习因子 异步变化的学习因子 二阶粒子群算法 二阶振荡粒子群算法

⑦ 求:粒子群算法 求解非线性方程组的Matlab代码

%% 1 维函数,全局最小寻优
% finding the mimimum value.
clc % 清屏
clear all; % 删除 workplace 变量
close all; % 关掉显示图形窗口
%% 目标方程
f = @(x) x.*sin(x) + x.*cos(2.*x);
%% 边界
lb = 0; % 下限
ub = 10; % 上限
%% 找最小值 + 画图
x0 = [0 1 3 6 8 10];
hf = figure;
for i=1:6
% fmincon:求多个变量的目标函数的最小值
% fmincon(FUN,X,A,B,Aeq,Beq,LB,UB,NONLCON,options,varargin)
x(i) = fmincon(f,x0(i),[],[],[],[],lb,ub,[],...
optimset('Algorithm','SQP','Disp','none'));
subplot(2,3,i)
ezplot(f,[lb ub]);
hold on
plot(x0(i),f(x0(i)),'k+')
plot(x(i),f(x(i)),'ro')
hold off
title(['Starting at ',num2str(x0(i))]) %起始点
if i == 1 || i == 4
ylabel('x sin(x) + x cos(2 x)')
end
end
%% A common GOTCHA!
% 一维边界最小值问题 --- Solver: |fminbnd|.
x2 = fminbnd(f,lb,ub)% 单变量边界非线性函数最小求解
figure
ezplot(f,[lb ub]);
hold on
plot(x2,f(x2),'ro')
hold off
ylabel('x sin(x) + x cos(2 x)')
title({'Solution using fminbnd.','Required no starting point!'})
%% 使用 globalSearch or MultiStart 寻优
problem = createOptimProblem('fmincon','objective',f,'x0',x0(1),'lb',lb,...
'ub',ub,'options',optimset('Algorithm','SQP','Disp','none'));
gs = GlobalSearch; % 全局寻优
xgs = run(gs,problem); % 执行当前路径 --> Use CD or ADDPATH to make the script
executable from the prompt
figure,
ezplot(f,[lb ub]);
hold on
plot(xgs,f(xgs),'ro')
hold off
ylabel('x sin(x) + x cos(2 x)')
title('Solution using globalSearch.')

⑧ 求解:怎样使用MATLAB中的遗传算法计算器Optimization Tool中的GA——Genetic Algorithm,如图,重谢

比如通过MATLAB遗传算法的思想求解f(x)=x*sin(10pi*x)+2.0,-1<=x<=2的最大值问题,结果精确到3位小数。

首先在matlab命令窗口输入f=@(x)-(x*sin(10*pi*x)+2) 输出结果为

>> f=@(x)-(x*sin(10*pi*x)+2)

f =

@(x)-(x*sin(10*pi*x)+2)

接着输入gatool会打开遗传算法工具箱

显示51代之后算法终止,最小结果为-3.85027334719567,对应的x为1.851,由于自定义函数加了负号,所以原式的最大值为3.85027334719567,对应的x为1.851。

不过这是遗传算法得到的结果,每次运行的结果可能会有所不同,而且不一定是确切的最大值。

遗传算法适合应用在一些求最优解比较复杂的问题(常规的算法运算时间过长,甚至无法解决)。

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

你这里有两个程序,第二个程序与第一个实质上是一样的,区别就是信号与导向矢量的写法有点不同,这里我就不注释了。还有,我下面附了一段我自己的写的程序,里面有SIM算法。G-S正交化算法等。是基于圆阵形式的,你的算法是基于线阵的,他们程序上的区别在于导向矢量的不同。我的算法是某项目中的,保证好使。建议学习波束形成技术,注意把程序分块,例如分成,求导向矢量;最优权值;形成波束等等。
程序如下:
4单元均匀线阵自适应波束形成图
clear
clc
format long;
v=1;
M=4;
N=1000;%%%%%%%快拍数
f0=21*10^3;%%%%%%%%%%%信号与干扰的频率
f1=11*10^3;
f2=15*10^3;
omiga0=2*pi*f0;%%%%%%%信号与干扰的角频率
omiga1=2*pi*f1;
omiga2=2*pi*f2;
sita0=08; %信号方向
sita1=04; %干扰方向1
sita2=21; %干扰方向2
for t=1:N %%%%%%%%%%%%信号
adt(t)=sin(omiga0*t/(N*f0));
a1t(t)=sin(omiga1*t/(N*f1));
a2t(t)=sin(omiga2*t/(N*f2));
end
for i=1:M %%%%%%%%%%%%信号的导向矢量:线阵的形式
ad(i,1)=exp(j*(i-1)*pi*sin(sita0));
a1(i,1)=exp(j*(i-1)*pi*sin(sita1));
a2(i,1)=exp(j*(i-1)*pi*sin(sita2));
end
R=zeros(M,M);
for t=1:N
x=adt(t)*ad+a1t(t)*a1+a2t(t)*a2; %阵列对信号的完整响应
R=R+x*x';%信号的协方差矩阵
end
R=R/N;%%%%%%%%%协方差矩阵,所有快拍数的平均
miu=1/(ad'*inv(R)*ad);%%%%%%这个貌似是LMS算法的公式,具体我记不太清,这里是求最优权值,根据这个公式求出,然后加权
w=miu*inv(R)*ad;
%%%%%%形成波束%%%%%%%%%%%%%%%%%%%
for sita=0:pi/100:pi
for i=1:M
x_(i,1)=exp(j*(i-1)*pi*sin(sita));
end
y(1,v)=w'*x_;%%%%%%%对信号进行加权,消除干扰
v=v+1;
end
y_max=max(y(:));%%%%%%%%%%%%%%%归一化
y_1=y/y_max;
y_db=20*log(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=21*10^3;
omiga0=2*pi*f0;
sita0=06;%信号方向
for t=1:N
adt(t)=sin(omiga0*t/(N*f0));
end
for i=1:M
ad(i,1)=exp(j*(i-1)*pi*sin(sita0));
end
R=zeros(4,4);
r=zeros(4,1);
for t=1:N
x=adt(t)*ad;
R=R+x*x';
end
R=R/N;
miu=1/(ad'*inv(R)*ad);
w=miu*inv(R)*ad;
for sita=0:pi/100:pi/2
for i=1:M
a(i,1)=exp(j*(i-1)*pi*sin(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;
%//参数设置===========================================
1=0;
2=0;
3=0;
% for rrr=1:16000
signal_num=1; %signal number
noise_num=5; %interference number
R0=06; %圆的半径
SP=2000; %Sample number
N=8; %阵元数
snr=-10; %Signal-to-Noise
sir1=10; %Signal-to-Interference one
sir2=10; %Signal-to-Interference two
sir3=10; %Signal-to-Interf
sir4=10;
sir5=10;
%//================noise Power-to-signal Power====================
factor_noise_1=10^(-sir1/10);
factor_noise_2=10^(-sir2/10);
factor_noise_3=10^(-sir3/10);
factor_noise_4=10^(-sir4/10);
factor_noise_5=10^(-sir5/10);
factor_noise_targe=10^(-snr/10);

% //======================== ===============

d1=85*pi/180;%%干扰1的方位角
d2=100*pi/180;%干扰2的方位角
d3=147*pi/180;%干扰3的方位角
d4=200*pi/180;%干扰4的方位角
d5=250*pi/180;%干扰5的方位角
d6=150*pi/180;%目标的方位角

e1=15*pi/180;%%干扰1的俯仰角
e2=25*pi/180;%干扰2的俯仰角
e3=85*pi/180;%干扰3的俯仰角
e4=50*pi/180;%干扰4的俯仰角
e5=70*pi/180;%干扰5的俯仰角
e6=85*pi/180;%目标的俯仰角
% //====================目标信号==========================
t=1:1:SP;
fc=2e7;
Ts=1/(3e10);
S0=5*cos(2*pi*fc*t*Ts);%目标信号
for kk=1:N
phi_n(kk)=2*pi*(kk-1)/N;
end

%//====================操纵矢量==========================================
A=[conj(exp(j*2*pi*R0*cos(d6-phi_n)*sin(e6)));conj(exp(j*2*pi*R0*cos(d1-phi_n)*sin(e1)));conj(exp(j*2*pi*R0*cos(d2-phi_n)*sin(e2)));conj(exp(j*2*pi*R0*cos(d3-phi_n)*sin(e3)));conj(exp(j*2*pi*R0*cos(d4-phi_n)*sin(e4)));conj(exp(j*2*pi*R0*cos(d5-phi_n)*sin(e5)))]';
A1=[conj(exp(j*2*pi*R0*cos(d1-phi_n)*sin(e1)));conj(exp(j*2*pi*R0*cos(d2-phi_n)*sin(e2)));conj(exp(j*2*pi*R0*cos(d3-phi_n)*sin(e3)));conj(exp(j*2*pi*R0*cos(d4-phi_n)*sin(e4)));conj(exp(j*2*pi*R0*cos(d5-phi_n)*sin(e5)))]';

% //==========================================================Power of the interference
% // depending on the signal power and SIR
Ps1=0;
Ps2=0;
Ps3=0;
Ps4=0;
Ps5=0;
S1=zeros(1,SP);
S2=zeros(1,SP);
S3=zeros(1,SP);
S4=zeros(1,SP);
S5=zeros(1,SP);

Ps0=S0*S0'/SP; % signal power
Ps1=Ps0*factor_noise_1;
Ps2=Ps0*factor_noise_2;
Ps3=Ps0*factor_noise_3;
Ps4=Ps0*factor_noise_4;
Ps5=Ps0*factor_noise_5;
% //==========================干扰信号的随机包络=========================
S1=normrnd(0,sqrt(Ps1/2),1,SP)+j*normrnd(0,sqrt(Ps1/2),1,SP);
S2=normrnd(0,sqrt(Ps2/2),1,SP)+j*normrnd(0,sqrt(Ps2/2),1,SP);
S3=normrnd(0,sqrt(Ps3/2),1,SP)+j*normrnd(0,sqrt(Ps3/2),1,SP);
S4=normrnd(0,sqrt(Ps4/2),1,SP)+j*normrnd(0,sqrt(Ps4/2),1,SP);
S5=normrnd(0,sqrt(Ps5/2),1,SP)+j*normrnd(0,sqrt(Ps5/2),1,SP);
%//
S=[S0;S1;S2;S3;S4;S5];
SS1=[S1;S2;S3;S4;S5];

X=A*S;%信号加干扰
XX2=A1*SS1; %接收到的干扰
Pw_noise=sqrt(Ps0*factor_noise_targe/2);
a1=randn(N,SP);
a2=randn(N,SP);
a1=a1/norm(a1);
a2=a2/norm(a2);
W=Pw_noise*(a1+sqrt(-1)*a2);
X=X+W;

% //--------------------------SMI算法----------------------------------------
Rd=X*S0'/SP;
R=X*X'/(SP*1);
Wc_SMI=pinv(R)*Rd/(Rd'*pinv(R)*Rd);%权向量
Wc_SMI=Wc_SMI/norm(Wc_SMI);
Y_SMI=Wc_SMI'*X; %SMI算法恢复出来的信号

%//-------------------------------------GS算法------------------
m=1;
for i=1:400:2000
X2(:,m)=XX2(:,i);
m=m+1;
end
a=zeros(1,8);
phi_n=zeros(1,8);
phi=0:pi/180:2*pi;
theta=0:pi/180:pi/2;
for kk=1:8
a(kk)=1;
phi_n(kk)=2*pi*(kk-1)/8;
end

x1=zeros(1,8);
x2=zeros(1,8);
x3=zeros(1,8);
x4=zeros(1,8);
x5=zeros(1,8);
x1=X2(:,1)';
x2=X2(:,2)';
x3=X2(:,3)';
x4=X2(:,4)';
x5=X2(:,5)';

Z1=x1;
Z1_inner_proct=Z1*conj(Z1);
Z1_mode=sqrt(sum(Z1_inner_proct));
Y1=Z1/Z1_mode;

Inner_proct=sum(x2*conj(Y1));
Z2=x2-Inner_proct*Y1;

Z2_inner_proct=sum(Z2*conj(Z2));
Z2_mode=sqrt(Z2_inner_proct);
Y2=Z2/Z2_mode;

Inner_proct1=sum(x3*conj(Y1));
Inner_proct2=sum(x3*conj(Y2));
Z3=x3-Inner_proct1*Y1-Inner_proct2*Y2;

Z3_inner_proct=sum(Z3*conj(Z3));
Z3_mode=sqrt(Z3_inner_proct);
Y3=Z3/Z3_mode;

Inner_proct1_0=sum(x4*conj(Y1));
Inner_proct2_0=sum(x4*conj(Y2));
Inner_proct3_0=sum(x4*conj(Y3));
Z4=x4-Inner_proct1_0*Y1-Inner_proct2_0*Y2-Inner_proct3_0*Y3;

Z4_inner_proct=sum(Z4*conj(Z4));
Z4_mode=sqrt(Z4_inner_proct);
Y4=Z4/Z4_mode;

Inner_proct1_1=sum(x5*conj(Y1));
Inner_proct2_1=sum(x5*conj(Y2));
Inner_proct3_1=sum(x5*conj(Y3));
Inner_proct4_1=sum(x5*conj(Y4));
Z5=x5-Inner_proct1_1*Y1-Inner_proct2_1*Y2-Inner_proct3_1*Y3-Inner_proct4_1*Y4;

Z5_inner_proct=sum(Z5*conj(Z5));
Z5_mode=sqrt(Z5_inner_proct);
Y5=Z5/Z5_mode;
%Y1
%Y2
%Y3
%Y4
%Y5
w0=zeros(1,8);
w=zeros(1,8);
for mm=1:8;
w0(mm)=exp(-j*2*pi*R0*cos(d6-phi_n(mm))*sin(e6));
end
dd1=sum(w0*conj(Y1))*Y1;
dd2=sum(w0*conj(Y2))*Y2;
dd3=sum(w0*conj(Y3))*Y3;
dd4=sum(w0*conj(Y4))*Y4;
dd5=sum(w0*conj(Y5))*Y5;
w=w0-dd1-dd2-dd3-dd4-dd5;
Wc_GS=w;
Wc_GS=Wc_GS/(norm(Wc_GS));
Y_GS=Wc_GS*X; %GS算法恢复出来的图像

%//----------------------------------MMSE算法-----------------------
Rd=X*S0'/SP;
R=X*X'/(SP*1);
Wc_MMSE=pinv(R)*Rd;
Wc_MMSE=Wc_MMSE/norm(Wc_MMSE);
Y_MMSE=Wc_MMSE'*X; %MMSE算法恢复出来的信号
S0=S0/norm(S0);
Y_GS=Y_GS/norm(Y_GS);
Y_SMI=Y_SMI/norm(Y_SMI);
Y_MMSE=Y_MMSE/norm(Y_MMSE);

% figure(1)
% plot(real(S0));
% title('原始信号');
% xlabel('采样快拍数');
% ylabel('信号幅度');
% figure(2)
% plot(real(Y_SMI));
% title('运用SMI算法处理出的信号');
% xlabel('采样快拍数');
% ylabel('信号幅度');
% figure(3)
% plot(real(Y_GS));
% title('运用G-S算法处理出的信号');
% xlabel('采样快拍数');
% ylabel('信号幅度');
% figure(4)
% plot(real(Y_MMSE));
% for i=1:SP
% ss(i)=abs(S0(i)-Y_SMI(i))^2;
% end
% q_1=mean(ss);
% for i=1:SP
% ss1(i)=abs(S0(i)-Y_GS(i))^2;
% end
% q_2=mean(ss1);
% for i=1:SP
% ss2(i)=abs(S0(i)-Y_MMSE(i))^2;
% end
% q_3=mean(ss2);
%
% 1=1+q_1;
% 2=2+q_2;
% 3=3+q_3;
% end
% 1/16000
% 2/16000
% 3/16000

phi=0:pi/180:2*pi;
theta=0:pi/180:pi/2;

%
% % //------------------------ 形成波束-----------------------------------------
F_mmse=zeros(91,361);
F_smi=zeros(91,361);
F_gs=zeros(91,361);
for mm=1:91
for nn=1:361
p1=sin(theta(mm));
p2=cos(phi(nn));
p3=sin(phi(nn));

q1=sin(e6);
q2=cos(d6);
q3=sin(d6);
for hh=1:8
w1=cos(phi_n(hh));
w2=sin(phi_n(hh));
zz1=q2*w1+q3*w2;
zz2=p2*w1+p3*w2;
zz=zz2*p1-zz1*q1;
F_mmse(mm,nn)= F_mmse(mm,nn)+conj(Wc_MMSE(hh))*(exp(j*2*pi*R0*(zz2*p1)));
F_smi(mm,nn)=F_smi(mm,nn)+conj(Wc_SMI(hh))*(exp(j*2*pi*R0*(zz2*p1)));
F_gs(mm,nn)=F_gs(mm,nn)+conj((Wc_GS(hh))')*(exp(j*2*pi*R0*(zz2*p1)));

end
end
end

F_MMSE=abs(F_mmse);
F_SMI=abs(F_smi);
F_GS=abs(F_gs);
figure(5)
mesh(20*log10(F_MMSE))
figure(6)
mesh(20*log10(F_SMI))
title('SMI算法波束形成图');
xlabel('方位角');
ylabel('俯仰角');
zlabel('幅度/dB');
figure(7)
mesh(20*log10(F_GS))
title('G-S算法波束形成图');
xlabel('方位角');
ylabel('俯仰角');
zlabel('幅度/dB');

阅读全文

与matlabgs算法相关的资料

热点内容
钢筋是怎么加密的 浏览:441
二分查找算法php 浏览:518
php产品对比 浏览:641
解压伤感图片 浏览:476
python判断周几 浏览:17
数据文档加密保管 浏览:168
app会员如何运营 浏览:860
工行app登录名如何改 浏览:25
window怎么登陆服务器 浏览:992
Python取ID对应的值 浏览:633
现在我的世界什么服务器最混乱 浏览:764
美国好的源码出售 浏览:326
苹果ipad文件夹怎么添加文字 浏览:485
腾讯云连接自己的服务器地址 浏览:218
硕士英语综合教程pdf 浏览:46
分段加密的安全性 浏览:507
咪咕直播为什么没有适配安卓系统 浏览:172
php模版大全 浏览:102
没车能解压吗 浏览:634
php开发oa系统源码 浏览:759