文档库 最新最全的文档下载
当前位置:文档库 › pso优化算法matlab程序

pso优化算法matlab程序

pso优化算法matlab程序
pso优化算法matlab程序

%------初始格式化-------------------------------------------------

clear all;

clc;

format long;

%------给定初始化条件---------------------------------------------

c1=1.4962; %学习因子1

c2=1.4962; %学习因子2

w=0.7298; %惯性权重

MaxDT=1000; %最大迭代次数

D=10; %搜索空间维数(未知数个数)

N=40; %初始化群体个体数目

eps=10^(-6); %设置精度(在已知最小值时候用)

%------初始化种群的个体(可以在这里限定位置和速度的范围)-----------

for i=1:N

for j=1:D x(i,j)=randn; %随机初始化位置

v(i,j)=randn; %随机初始化速度

end

end

%------先计算各个粒子的适应度,并初始化Pi 和Pg---------------------

for i=1:N

p(i)=fitness(x(i,:),D);

y(i,:)=x(i,:);

end pg=x(1,:);

for i=2:N

if fitness(x(i,:),D) pg=x(i,:);

end

end

%------进入主要循环,按照公式依次迭代,直到满足精度要求-----------

for t=1:MaxDT for i=1:N

v(i,:)=w*v(i,:)+c1*rand*(y(i,:)-x(i,:))+c2*rand*(pg-x(i,:));

x(i,:)=x(i,:)+v(i,:);

if fitness(x(i,:),D)

p(i)=fitness(x(i,:),D);

y(i,:)=x(i,:); %Pg 为全局最优

end

if p(i)

pg=y(i,:);

end

end

Pbest(t)=fitness(pg,D);

end

%------最后给出计算结果disp('*************************************************************')

disp('函数的全局最优位置为:')

Solution=pg' disp('最后得到的优化极值为:')

Result=fitness(pg,D)

disp('*************************************************************') %------算法结束---DreamSun GL & HF-----------------------------------

适应度函数源程序(fitness.m)

function result=fitness(x,D) sum=0;

for i=1:D sum=sum+x(i)^2;

end

result=sum;

Matlab频谱分析程序

Matlab频谱分析程序

Matlab 信号处理工具箱 谱估计专题 频谱分析 Spectral estimation (谱估计)的目标是基于一个有限的数据集合描述一个信号的功率(在频率上的)分布。功率谱估计在很多场合下都是有用的,包括对宽带噪声湮没下的信号的检测。 从数学上看,一个平稳随机过程n x 的power spectrum (功率谱)和correlation sequence (相关序列)通过discrete-time Fourier transform (离散时间傅立叶变换)构成联系。从normalized frequency (归一化角频率)角度看,有下式 ()()j m xx xx m S R m e ωω∞ -=-∞ = ∑ 注:()() 2 xx S X ωω=,其中 ()/2 /2 lim N j n n N N X x e N ωω=-=∑ πωπ -<≤。 其matlab 近似为X=fft(x,N)/sqrt(N),在下文中()L X f 就是指matlab fft 函数的计算结果了 使用关系2/s f f ωπ=可以写成物理频率f 的函数,

其中s f 是采样频率 ()()2/s jfm f xx xx m S f R m e π∞ -=-∞ = ∑ 相关序列可以从功率谱用IDFT 变换求得: ()()()/2 2//2 2s s s f jfm f j m xx xx xx s f S e S f e R m d df f πωππ ωωπ- -= =?? 序列n x 在整个Nyquist 间隔上的平均功率可以 表示为 ()()() /2 /2 02s s f xx xx xx s f S S f R d df f ππ ωωπ- -= =?? 上式中的 ()()2xx xx S P ωωπ = 以及()()xx xx s S f P f f = 被定义为平稳随机信号n x 的power spectral density (PSD)(功率谱密度) 一个信号在频带[]1 2 1 2 ,,0ωωωω π ≤<≤上的平均功率 可以通过对PSD 在频带上积分求出 []()()2 1 121 2 ,xx xx P P d P d ωωωωωω ωωωω-- = +?? 从上式中可以看出()xx P ω是一个信号在一个无 穷小频带上的功率浓度,这也是为什么它叫做功率谱密度。

(完整word版)用MATLAB编写PSO算法及实例

用MATLAB 编写PSO 算法及实例 1.1 粒子群算法 PSO 从这种模型中得到启示并用于解决优化问题。PSO 中,每个优化问题的潜在解都是搜索空间中的一只鸟,称之为粒子。所有的粒子都有一个由被优化的函数决定的适值( fitness value) ,每个粒子还有一个速度决定它们飞翔的方向和距离。然后粒子们就追随当前的最优粒子在解空间中搜索。 PSO 初始化为一群随机粒子(随机解),然后通过迭代找到最优解。在每一次迭代中,粒子通过跟踪两个极值来更新自己;第一个就是粒子本身所找到的最优解,这个解称为个体极值;另一个极值是整个种群目前找到的最优解,这个极值是全局极值。另外也可以不用整个种群而只是用其中一部分作为粒子的邻居,那么在所有邻居中的极值就是局部极值。 假设在一个维的目标搜索空间中,有个粒子组成一个群落,其中第个粒子表示为一个维的向量 ,。 第个粒子的“飞行 ”速度也是一个维的向量,记为 ,。 第个粒子迄今为止搜索到的最优位置称为个体极值,记为 ,。 整个粒子群迄今为止搜索到的最优位置为全局极值,记为 在找到这两个最优值时,粒子根据如下的公式(1.1)和( 1.2)来更新自己的速度和位置: (1.1) (1. 2) 其中:和为学习因子,也称加速常数(acceleration constant),和为[0,1]范围内的均匀随机数。式(1.1)右边由三部分组成,第一部分为“惯性(inertia)”或“动量(momentum)”部分,反映了粒子的运动“习惯(habit)”,代表粒子有维持自己D N i D ),,,(21iD i i i x x x X N i ,,2,1 i D ),,21i iD i i v v v V ,( 3,2,1 i i ),,,(21iD i i best p p p p N i ,,2,1 ),,,(21gD g g best p p p g ) (2211id gd id id id id x p r c x p r c v w v id id id v x x 1c 2c 1r 2r

信号检测与估值matlab仿真报告

信号检测与估值 仿真报告 题目信号检测与估值的MATLAB仿真学院通信工程学院 专业通信与信息系统 学生姓名 学号 导师姓名

作业1 试编写程序,画出相干移频键控、非相干移频键控(无衰落)和瑞利衰落信道下非相干移频键控的性能曲线。 (1)根据理论分析公式画性能曲线; (2)信噪比范围(0dB-10dB),间隔是1dB; (3)信噪比计算SNR=10lg(Es/N0) 一、脚本文件 1、主程序 %******************************************************** %二元移频信号检测性能曲线(理论分析) %FSK_theo.m %******************************************************** clear all; clc; SNRindB=0:1:20; Pe_CFSK=zeros(1,length(SNRindB)); Pe_NCFSK=zeros(1,length(SNRindB)); Pe_NCFSK_Rayleigh=zeros(1,length(SNRindB)); for i=1:length(SNRindB) EsN0=exp(SNRindB(i)*log(10)/10); Es_aveN0=exp(SNRindB(i)*log(10)/10); Pe_CFSK(i)=Qfunct(sqrt(EsN0));%相干移频键控系统 Pe_NCFSK(i)=0.5*exp(-EsN0/2);%非相干移频键控系统(无衰落) Pe_NCFSK_Rayleigh(i)=1/(2+Es_aveN0);%非相干移频键控系统(瑞利衰落)end semilogy(SNRindB,Pe_CFSK,'-o',SNRindB,Pe_NCFSK,'-*',SNRindB,Pe_NCFSK_Rayleigh ,'-'); xlabel('Es/No或平均Es/No(dB)'); ylabel('最小平均错误概率Pe'); legend('相干移频','非相干移频(无衰落)','非相干移频(瑞利衰落)'); title('二元移频信号检测性能曲线'); axis([0 20 10^-7 1]); grid on; 2、调用子函数 %******************************************************** %Q函数 %Qfunct.m %********************************************************

标准粒子群算法(PSO)及其Matlab程序和常见改进算法

一、粒子群算法概述 粒子群优化算法(PSO)是一种进化计算技术(evolutionary computation),1995 年由Eberhart 博士和kennedy博士提出,源于对鸟群捕食的行为研究。该算法最初是受到飞鸟集群活动的规律性启发,进而利用群体智能建立的一个简化模型。粒子群算法在对动物集群活动行为观察基础上,利用群体中的个体对信息的共享使整个群体的运动在问题求解空间中产生从无序到有序的演化过程,从而获得最优解。 PSO中,每个优化问题的解都是搜索空间中的一只鸟。我们称之为“粒子”。所有的粒子都有一个由被优化的函数决定的适应值(fitness value),每个粒子还有一个速度决定他们飞翔的方向和距离。然后粒子们就追随当前的最优粒子在解空间中搜索。 PSO 初始化为一群随机粒子(随机解)。然后通过迭代找到最优解。在每一次迭代中,粒子通过跟踪两个”极值”来更新自己。第一个就是粒子本身所找到的最优解,这个解叫做个体极值pBest。另一个极值是整个种群目前找到的最优解,这个极值是全局极值gBest。另外也可以不用整个种群而只是用其中一部分作为粒子的邻居,那么在所有邻居中的极值就是局部极值。 二、算法原理 粒子群算法采用常数学习因子,及惯性权重,粒子根据如下的公式更新自己的速度和位置。 V ki=ωk V i?1i+c1r1(Q bi?Q k?1i)+c2r2(Q bg?Q k?1i)Q ki=Q k?1i+V ki 三、算法步骤 1、随机初始化种群中各微粒的位置和速度; 2、评价个粒子的适应度,将各粒子的位置和适应度储存在各微粒的pbest(Q bi)中,将所有pbest中适应度最优的个体的位置和适应度存储在gbest(Q bg)中。 3、更新粒子的速度和位移。 V ki=ωk V i?1i+c1r1(Q bi?Q k?1i)+c2r2(Q bg?Q k?1i)Q ki=Q k?1i+V ki 4、对每个微粒,与其前一个最优位置比较,如果较好,则将其作为当前的最优位置。 5、比较当前所有的pbest和上一迭代周期的gbest,更新gbest。 6、若满足停止条件(达到要求精度或迭代次数),搜索停止,输出结果,否则,返回2。

music 方位估计 实验报告三 MATLAB 代码

实验报告三 实验目的: 实现常规波束形成及基于MUSIC 方法的方位估计。 实验内容: 1)若干阵元的接收阵,信号频率为10KHz ,波束主轴12度,仿真给出常规波束形成的波束图。 2)16个阵元的均匀线列阵,信号频率为10KHz ,信号方位为12度,用MUSIC 方法完成目标定向,信噪比-5dB ,0dB ,5dB 。 i) 波束形成时的阵型设计为两种,一种是均匀线列阵,阵元16个;一种是均匀圆阵,阵元数为16个,比较这两种阵型的波束图。 ii )比较不同信噪比下MUSIC 方法估计的性能(统计100次)。 实验原理: i)常规波束形成: 如图所示,基阵的输出),(θt v 。 ∑∑=*=* ==M m i i M m i i w t x t x w t v 1 1 ) ()()()(),(θθθ 采用向量符号则有, )()()()(),(H H θθθw x x w t t t v == 式中,x(t)和w(q )分别为观测数据向量和加权系数向量, ) ,(θt v 图 1 波束形成器基本原理图

T M 21])()()([)(t x t x t x t Λ=x T M 21])()()([)(θθθθw w w Λ =w 基阵输出端的空间功率谱表示为: ) ()( )()]()([)( )]()()()([ )],(),([ ] ),([)(H H H H H *2 θθθθθθθθθθRw w w x x w w x x w =====t t E t t E t v t v E t v E P 式中,R 为观测数据的协方差矩阵。 ii )基于MUSIC 方法的方位估计: )()()()(1 t n t s a t x i d i +=∑=θ T M 21])()()([)(t x t x t x t Λ =x )()()()(t n t s A t x +=θ 假设: (1 ) 信号源的数目d 是已知的, 且d < M ; (2 ) 各信号的方向矢量是相互独立的, 即)(θA 是一个列满秩矩阵; (3 ) 噪声)(t n 是空间平稳随机过程, 为具有各态历经性的均值为零、方差为σ2n 的高斯过程; (4 ) 噪声各取样间是统计独立的。 在上述假设条件下, 基阵输出的协方差矩阵可表示为: I A AR t x t x E R H s H 2])()([α+== 其中, R s 为信号的协方差矩阵;I 为单位矩阵。对R 进行特征分解, 并以特 征值降值排列可得 H m m M d m m H m m d m m e e e e R ∑∑+==+ =1 1λ λ 信号子空间与噪声子空间正交。 若噪声子空间记为E N , 即 ∑+== M d m H m m N e e E 1

Matlab频谱分析程序

Matlab 信号处理工具箱 谱估计专题 频谱分析 Spectral estimation (谱估计)的目标是基于一个有限的数据集合描述一个信号的功率(在频率上的)分布。功率谱估计在很多场合下都是有用的,包括对宽带噪声湮没下的信号的检测。 从数学上看,一个平稳随机过程n x 的power spectrum (功率谱)和correlation sequence (相关序列)通过discrete-time Fourier transform (离散时间傅立叶变换)构成联系。从normalized frequency (归一化角频率)角度看,有下式 ()()j m xx xx m S R m e ωω∞ -=-∞ = ∑ 注:()() 2 xx S X ωω=,其中( )/2 /2 lim N j n n N n N X x e ωω=-=∑ πωπ-<≤。其matlab 近似为X=fft(x,N)/sqrt(N),在下文中()L X f 就是指matlab fft 函数的计算结果了 使用关系2/s f f ωπ=可以写成物理频率f 的函数,其中s f 是采样频率 ()()2/s jfm f xx xx m S f R m e π∞ -=-∞ = ∑ 相关序列可以从功率谱用IDFT 变换求得: ()()()/2 2//2 2s s s f jfm f j m xx xx xx s f S e S f e R m d df f πωπ π ωωπ--= =? ? 序列n x 在整个Nyquist 间隔上的平均功率可以表示为 ()()() /2 /2 02s s f xx xx xx s f S S f R d df f π π ωωπ--= =? ?

粒子群算法解决函数优化问题

粒子群算法解决函数优化问题 1、群智能算法研究背景 粒子群优化算法(Particle Swarm Optimization,PSO)是由Kennedy 和Eberhart 在研究鸟类和鱼类的群体行为基础上于1995 年提出的一种群智能算法,其思想来源于人工生命和演化计算理论,模仿鸟群飞行觅食行为,通过鸟集体协作使群体达到优。 PSO算法作为一种新的群智能算法,可用于解决大量非线性、不可微和多峰值的复杂函数优化问题,并已广泛应用于科学和工程领域,如函数优化、神经网络训练、经济调度、模式识别与分类、结构设计、电磁场和任务调度等工程优化问题等。 PSO算法从提出到进一步发展,仅仅经历了十几年的时间,算法的理论基础还很薄弱,自身也存在着收敛速度慢和早熟的缺陷。如何加快粒子群算法的收敛速度和避免出现早熟收敛,一直是大多数研究者关注的重点。因此,对粒子群算法的分析改进不仅具有理论意义,而且具有一定的实际应用价值。 2、国内外研究现状 对PSO算法中惯性权重的改进:Poli等人在速度更新公式中引入惯性权重来更好的控制收敛和探索,形成了当前的标准PSO算法。 研究人员进行了大量的研究工作,先后提出了线性递减权值( LDIW)策略、模糊惯性权值( FIW) 策略和随机惯性权值( RIW) 策略。其中,FIW 策略需要专家知识建立模糊规则,实现难度较大,RIW 策略被用于求解动态系统,LDIW策略相对简单且收敛速度快, 任子晖,王坚于2009 年,又提出了基于聚焦距离变化率的自适应惯性权重PSO算法。 郑春颖和郑全弟等人,提出了基于试探的变步长自适应粒子群算

法。这些改进的PSO算法既保持了搜索速度快的特点, 又提高了全局搜索的能力。 对PSO算法的行为和收敛性的分析:1999 年采用代数方法对几种典型PSO算法的运行轨迹进行了分析,给出了保证收敛的参数选择范围。在收敛性方面Fransvan den Bergh引用Solis和Wets关于随机性算法的收敛准则,证明了标准PSO算法不能收敛于全局优解,甚至于局部优解;证明了保证收敛的PSO算法能够收敛于局部优解,而不能保证收敛于全局优解。 国内的学者:2006 年,刘洪波和王秀坤等人对粒子群优化算法的收敛性进行分析,指出它在满足收敛性的前提下种群多样性趋于减小,粒子将会因速度降低而失去继续搜索可行解的能力,提出混沌粒子群优化算法。 2008 年,黄翀鹏和熊伟丽等人分析惯性权值因子大小对PSO算法收敛性所带来的影响,对粒子群算法进行了改进。2009 年,高浩和冷文浩等人,分析了速度因子对微粒群算法影响,提出了一种基于Gaussian 变异全局收敛的粒子群算法。并证明了它能以概率 1 收敛到全局优解。 2010 年,为提高粒子群算法的收敛性,提出了基于动力系统的稳定性理论,对惯性权重粒子群模型的收敛性进行了分析,提出了使得在算法模型群模型收敛条件下的惯性权重和加速系数的参数约束关系,使算法在收敛性方面具有显著优越性。在PSO算法中嵌入别的算法的思想和技术。 1997年,李兵和蒋慰孙提出混沌优化方法; 1998年,Angeline在PSO算法中引入遗传算法中的选择算子,该算法虽然加快了算法的收敛速度,但同时也使算法陷入局部优的概率大增,特别是在优化Griewank 基准函数的优值时得到的结果不理想; 2004 年,高鹰和谢胜利将混沌寻优思想引入到粒子群优化算法中,首先对当前群体中的优粒子进行混沌寻优, 再用混沌寻优的结果随机替换群体中的一个粒子,这样提出另一种混沌粒子群优化算法。

(完整版)MATLAB模拟2ASK调制误码率与信噪比关系曲线的程序

%模拟2ASK % Pe=zeros(1,26); jishu=1; for snr=-10:0.5:15 max = 10000; s=round(rand(1,max));%长度为max的随机二进制序列 f=100;%载波频率 nsamp = 1000;每个载波的取样点数 tc=0:2*pi/999:2*pi;tc的个数应与nsamp相同 cm=zeros(1,nsamp*max); cp=zeros(1,nsamp*max); mod=zeros(1,nsamp*max); for n=1:max; if s(n)==0; m=zeros(1,nsamp); b=zeros(1,nsamp); else if s(n)==1; m=ones(1,nsamp); b=ones(1,nsamp); end end c = sin(f*tc); cm((n-1)*nsamp+1:n*nsamp)=m; cp((n-1)*nsamp+1:n*nsamp)=b; mod((n-1)*nsamp+1:n*nsamp)=c; end tiaoz=cm.*mod;%2ASK调制 t = linspace(0,length(s),length(s)*nsamp); tz=awgn(tiaoz,snr);%信号tiaoz中加入白噪声,信噪比为SNR=10dB jiet = 2*mod.*tz; %相干解调 [N,Wn]=buttord(0.2,0.3,1,15); [b,a]=butter(N,Wn); dpsk=filter(b,a,jiet);%低通滤波 % 抽样判决,判决门限为0.5 depsk = zeros(1,nsamp*max); for m = nsamp/2:nsamp:nsamp*max; if dpsk(m) < 0.5; for i = 1:nsamp depsk((m-500)+i) = 0; end

用MATLAB编写PSO算法及实例

用MATLAB编写PSO算法及实例

用MATLAB 编写PSO 算法及实例 1.1 粒子群算法 PSO 从这种模型中得到启示并用于解决优化问题。PSO 中,每个优化问题的潜在解都是搜索空间中的一只鸟,称之为粒子。所有的粒子都有一个由被优化的函数决定的适值( fitness value) ,每个粒子还有一个速度决定它们飞翔的方向和距离。然后粒子们就追随当前的最优粒子在解空间中搜索。 PSO 初始化为一群随机粒子(随机解),然后通过迭代找到最优解。在每一次迭代中,粒子通过跟踪两个极值来更新自己;第一个就是粒子本身所找到的最优解,这个解称为个体极值;另一个极值是整个种群目前找到的最优解,这个极值是全局极值。另外也可以不用整个种群而只是用其中一部分作为粒子的邻居,那么在所有邻居中的极值就是局部极值。 假设在一个维的目标搜索空间中,有个粒子组成一个群落,其中第个粒子表示为一个维的向量 ,。 第个粒子的“飞行 ”速度也是一个维的向量,记为 ,。 第个粒子迄今为止搜索到的最优位置称为个体极值,记为 ,。 整个粒子群迄今为止搜索到的最优位置为全局极值,记为 在找到这两个最优值时,粒子根据如下的公式(1.1)和( 1.2)来更新自己的速度 D N i D ),,,(21iD i i i x x x X =N i ,,2,1 =i D ),,21i iD i i v v v V ,(=3,2,1 =i i ),,,(21iD i i best p p p p =N i ,,2,1 =),,,(21gD g g best p p p g =

和位置: (1.1) (1. 2) 其中:和为学习因子,也称加速常数(acceleration constant),和为 [0,1]范围内的均匀随机数。式(1.1)右边由三部分组成,第一部分为“惯性(inertia)”或“动量(momentum)”部分,反映了粒子的运动“习惯(habit)”,代表粒子有维持自己先前速度的趋势;第二部分为“认知(cognition)”部分,反映了粒子对自身历史经验的记忆(memory)或回忆(remembrance),代表粒子有向自身历史最佳位置逼近的趋势;第三部分为“社会(social)”部分,反映了粒子间协同合作与知识共享的群体历史经验。 二、算法设计 2.1 算法流程图 2.2 算法实现 算法的流程如下: ()) (2211id gd id id id id x p r c x p r c v w v -+-+*=id id id v x x +=1c 2c 1r 2 r

PSO算法

群体智能方法:是通过模拟自然界生物群体行为来实现人工智能的一种方法。 群体智能这个概念来自对自然界中生物群体的观察,群居性生物通过协作表现出的宏观智能行为特征被称为群体智能。 群体智能具有如下特点: (1) 控制是分布式的,不存在中心控制。因而它更能够适应当前网络环境下的工作状态,并且具有较强的鲁棒性,即不会由于某一个或几个个体出现故障而影响群体对整个问题的求解。 (2) 群体中的每个个体都能够改变环境,这是个体之间间接通信的一种方式,这种方式被称为“激发工作”。由于群体智能可以通过非直接通信的方式进行信息的传输与合作,因而随着个体数目的增加,通信开销的增幅较小,因此,它具有较好的可扩充性。 (3) 群体中每个个体的能力或遵循的行为规则非常简单,因而群体智能的实现比较方便,具有简单性的特点 (4) 群体表现出来的复杂行为是通过简单个体的交互过程突现出来的智能,因此,群体具有自组织性。 PSO基本原理 最初是为了在二维几何空间图形中优化模拟鸟群不可预测的运动。PSO 算法从这种模型中得到启示并用于解决优化问题。PSO算法中,每个优化问题的潜在解都是搜索空间中的一只鸟,称之为“粒子”。所有的粒子都有一个由目标函数决定的适应值(fitness value),每个粒子都由一个两维的速度变量决定各自飞翔的方向和距离。然后粒子们就追随当前的最优粒子在解空间中搜索。PSO算法初始化为一群随机粒子(随机解),然后通过迭代找到最优解。在每一次迭代中,粒子通过跟踪两个极值来更新自己。第一个极值就是粒子本身所经历的最优解,这个解被称为个体极值。另一个极值是整个种群目前所经历的最优解,这个极值被称为全局极值。另外也可以只选取整个种群中的一部分作为粒子的邻居,在所有邻居中的极值被称为局部极值。

PSO算法使用简介

PSO算法使用简介 1 PSO工具箱简介 PSOt为PSO的工具箱,该工具箱将PSO算法的核心部分封装起来,提供给用户的为算法的可调参数,用户只需要定义好自己需要优化的函数(计算最小值或者最大值),并设置好函数自变量的取值范围、每步迭代允许的最大变化量(称为最大速度,Max_V)等,即可自行优化。 与遗传算法相比,PSO仅需要调整少数几个参数即可实现函数的优化。该算法对待优化函数没有任何特别的要求(如可微分、时间连续等),因而其通用性极强,对多变量、高度非线性、不连续及不可微的情况更加具有其优势。 该工具箱的使用主要分为几个步骤: 1) 在Matlab中设置工具箱的路径; 2) 定义待优化函数; 3) 调用PSO算法的核心函数:pso_Trelea_vectorized()。 其中第三步最关键,用户需要根据自己的需要设置好参数,可使算法极快收敛。 下面对各个步骤一一介绍。 2 设置工具箱的路径 2.1 在Matlab的命令窗口点击"File-->Set Path....",如下图: 2.2 在弹出的对话框中点击"Add Folder",然后浏览找到工具箱放置的位置,如下图 2.3 若想用到该工具箱所带的测试函数,还需要用如上同样的方法,设置路径指向工具箱下的"testfunctions"文件夹; 2.4 若想用于训练神经网络的训练,设置路径指向工具箱下的"testfunctions"文件夹"nnet" 3 定义待优化函数(参见文件test_func.m) 用户根据自己的需要,定义需要优化的函数。举个例子,若想计算如下二元函数的最小值 z= 0.5*(x-3)^2+0.2*(y-5)^2-0.1 其中自变量x、y的范围均为[-50, 50]。 可按下面的方法定义该待优化函数: %%----------------------------------------------------------------%% function z=test_func(in) nn=size(in); x=in(:,1); y=in(:,2); nx=nn(1); for i=1:nx temp = 0.5*(x(i)-3)^2+0.2*(y(i)-5)^2-0.1; z(i,:) = temp; end %%----------------------------------------------------------------%% 需要特别指出的是:PSO算法的核心函数pso_Trelea_vectorized()自动初始化一组随机

kalman滤波在不同信噪比时的误码率matlab仿真程序

-20-15-10-50510152000.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5

Kalman滤波器在matlab仿真程序下的不同信噪比时的误码率: %multiuser_dectect.m clc; clear all; hold on BER_sum=zeros(1,13);%设定求和误码率的零矩阵; BER_ave=zeros(1,13); %设定平均误码率的零矩阵; for m=1:10;%m的长度为1到10 间隔为1; snr_in_db=-20:3:16;%定义信噪比的长度为-20到16 间隔为3;snr_in_db是信噪比用db表示 for i=1:length(snr_in_db);%i的长度为1到信噪比的长度 BER(i)= Kalman_S1(snr_in_db(i));%卡尔曼的误码率函数; end BER_sum=BER_sum+BER;%误码率求和的算法 end; BER_ave=0.1* BER_sum ; %误码率平均值的算法 semilogy( snr_in_db,BER_ave,'rd-');%y轴维数坐标图定义横坐标为信噪比,纵坐标为误码率; %Kalman_S1.m %Kalman algorithm %synchronous CDMA同步cdma %channel: White Gaussis Noise function [p] = Kalman_S1(snr_in_dB) SNR=10^(snr_in_dB/10); %信噪比由dB形式转化 sgma=1; % noise standard deviation is fixed 定义方差 Eb=sgma^2*SNR; A=[sqrt(Eb),sqrt(Eb),sqrt(Eb),sqrt(Eb),sqrt(Eb),sqrt(Eb),sqrt(Eb),sqrt(Eb),sqrt(Eb),sqr t(Eb),sqrt(Eb),sqrt(Eb),sqrt(Eb),sqrt(Eb),sqrt(Eb)]; K=length(A);

功率谱密度估计方法的MATLAB实现

功率谱密度估计方法的MATLAB实现 在应用数学和物理学中,谱密度、功率谱密度和能量谱密度是一个用于信号的通用概念,它表示每赫兹的功率、每赫兹的能量这样的物理量纲。在物理学中,信号通常是波的形式,例如电磁波、随机振动或者声波。当波的频谱密度乘以一个适当的系数后将得到每单位频率波携带的功率,这被称为信号的功率谱密度(power spectral density, PSD)或者谱功率分布(spectral power distribution, SPD)。功率谱密度的单位通常用每赫兹的瓦特数(W/Hz)表示,或者使用波长而不是频率,即每纳米的瓦特数(W/nm)来表示。信号的功率谱密度当且仅当信号是广义的平稳过程的时候才存在。如果信号不是平稳过程,那么自相关函数一定是两个变量的函数,这样就不存在功率谱密度,但是可以使用类似的技术估计时变谱密度。信号功率谱的概念和应用是电子工程的基础,尤其是在电子通信系统中,例如无线电和微波通信、雷达以及相关系统。因此学习如何进行功率谱密度估计十分重要,借助于Matlab工具可以实现各种谱估计方法的模拟仿真并输出结果。下面对周期图法、修正周期图法、最大熵法、Levinson递推法和Burg法的功率谱密度估计方法进行程序设计及仿真并给出仿真结果。 以下程序运行平台:Matlab R2015a(8.5.0.197613) 一、周期图法谱估计程序 1、源程序 Fs=100000; %采样频率100kHz N=1024; %数据长度N=1024 n=0:N-1; t=n/Fs; xn=sin(2000*2*pi*t); %正弦波,f=2000Hz Y=awgn(xn,10); %加入信噪比为10db的高斯白噪声 subplot(2,1,1); plot(n,Y) title('信号') xlabel('时间');ylabel('幅度');

谱相减MATLAB代码以及信噪比计算

实验二 语音信号的频域处理 一、 实验目的、要求 (1)掌握语音信号频域分析方法 (2)了解语音信号频域的特点 (3)了解谱减法作为频域语音增强的原理与编程实现 (3)了解谱减法的缺点,并分析产生该缺点的原因 二、实验原理 语音虽然是一个时变、非平稳的随机过程。但在短时间内可近似看作是平稳的。因此如果能从带噪语音的短时谱中估计出“纯净”语音的短时谱,即可达到语音增强的目的。由于噪声也是随机过程,因此这种估计只能建立在统计模型基础上。利用人耳感知对语音频谱分量的相位不敏感的特性,这类语音增强算法主要针对短时谱的幅度估计。 短时话幅度估计概述 设一帧加窗后的带噪语音为 ()()() 01y n s n d n n N =+≤≤- (2.1) 其中()s n 为纯净语音,()d n 假设为平稳加性高斯噪声。 将()y n 在一组基{()}k n φ上展开,使展对系数为各不相关的随机变量。设()y n 的相关函数为(,)y R n m ,由K -L 展开得知{()}k n φ满足 1 ()()(,)()N k y k m K n R n m m λφφ-==∑ (2.2) 则()y n 的展开式为 1 1 0()()()()N k k K N k k n y n Y n Y y n n φφ-=-=? =????=?? ∑∑ (2.3) 如果()y n 的相关长度小于帧长N ,则()k n φ的近似函数为 2()k nk n j N π??? = ?? ? (2.4) 可见()y n 的展开过程实际上相当于离散博里叶交换,其展开系数(为傅里叶变换系数。由()()()y n s n d n =+,则有:k k k Y S N =+。 其中[]||exp k k k Y Y j θ=、[]||exp k k k S S j α=、k N 分别为()y n 、()s n 及()d n 的傅里叶交换系数。由于假设噪声是高斯分布的,其傅里叶系数k N 相当于多个高

pso优化算法matlab程序

%------初始格式化------------------------------------------------- clear all; clc; format long; %------给定初始化条件--------------------------------------------- c1=1.4962; %学习因子1 c2=1.4962; %学习因子2 w=0.7298; %惯性权重 MaxDT=1000; %最大迭代次数 D=10; %搜索空间维数(未知数个数) N=40; %初始化群体个体数目 eps=10^(-6); %设置精度(在已知最小值时候用) %------初始化种群的个体(可以在这里限定位置和速度的范围)----------- for i=1:N for j=1:D x(i,j)=randn; %随机初始化位置 v(i,j)=randn; %随机初始化速度 end end %------先计算各个粒子的适应度,并初始化Pi 和Pg--------------------- for i=1:N p(i)=fitness(x(i,:),D); y(i,:)=x(i,:); end pg=x(1,:); for i=2:N if fitness(x(i,:),D) pg=x(i,:); end end %------进入主要循环,按照公式依次迭代,直到满足精度要求----------- for t=1:MaxDT for i=1:N v(i,:)=w*v(i,:)+c1*rand*(y(i,:)-x(i,:))+c2*rand*(pg-x(i,:)); x(i,:)=x(i,:)+v(i,:); if fitness(x(i,:),D) p(i)=fitness(x(i,:),D); y(i,:)=x(i,:); %Pg 为全局最优 end if p(i) pg=y(i,:); end end Pbest(t)=fitness(pg,D); end %------最后给出计算结果disp('*************************************************************') disp('函数的全局最优位置为:')

粒子群优化算法参数设置

一.粒子群优化算法综述 1.6粒子群优化算法的参数设置 1.6.1粒子群优化算法的参数设置—种群规模N 种群规模N影响着算法的搜索能力和计算量: PSO对种群规模要求不高,一般取20-40就可以达到很好的求解效果,不过对于比较难的问题或者特定类别的问题,粒子数可以取到100或200。 1.6.2粒子的长度D 粒子的长度D由优化问题本身决定,就是问题解的长度。 粒子的范围R由优化问题本身决定,每一维可以设定不同的范围。 1.6.3最大速度Vmax决定粒子每一次的最大移动距离,制约着算法的探索和开发能力 Vmax的每一维一般可以取相应维搜索空间的10%-20%,甚至100% ,也有研究使用将Vmax按照进化代数从大到小递减的设置方案。 1.6.4惯性权重控制着前一速度对当前速度的影响,用于平衡算法的探索和开发能力 一般设置为从0.9线性递减到0.4,也有非线性递减的设置方案; 可以采用模糊控制的方式设定,或者在[0.5, 1.0]之间随机取值; 设为0.729的同时将c1和c2设1.49445,有利于算法的收敛。 1.6.5压缩因子限制粒子的飞行速度的,保证算法的有效收敛 Clerc0.729,同时c1和c2设为2.05 。 1.6.6加速系数c1和c2 加速系数c1和c2代表了粒子向自身极值pBest和全局极值gBest推进的加速权值。 c1和c2通常都等于2.0,代表着对两个引导方向的同等重视,也存在一些c1和c2不相等的设置,但其范围一般都在0和4之间。研究对c1和c2的自适应调整方案对算法性能的增强有重要意义。 1.6.7终止条件 终止条件决定算法运行的结束,由具体的应用和问题本身确定。将最大循环数设定为500,1000,5000,或者最大的函数评估次数,等等。也可以使用算法

matlab 如何计算信噪比

Matlab信号上叠加噪声和信噪比的计算 在信号处理中经常需要把噪声叠加到信号上去,在叠加噪声时往往需要满足一定的信噪比,这样产生二个问题,其一噪声是否按指定的信噪比叠加,其二怎么样检验带噪信号中信噪比满足指定的信噪比。 在MATLAB中可以用randn产生均值为0方差为1的正态分布白噪声,但在任意长度下x=randn(1,N),x不一定是均值为0方差为1(有些小小的偏差),这样对后续的计算会产生影响。在这里提供3个函数用于按一定的信噪比把噪声叠加到信号上去,同时可检验带噪信号中信噪比。 1,把白噪声叠加到信号上去: function [Y,NOISE] = noisegen(X,SNR) % noisegen add white Gaussian noise to a signal. % [Y, NOISE] = NOISEGEN(X,SNR) adds white Gaussian NOISE to X. The SNR is in dB. NOISE=randn(size(X)); NOISE=NOISE-mean(NOISE); signal_power = 1/length(X)*sum(X.*X); noise_variance = signal_power / ( 10^(SNR/10) ); NOISE=sqrt(noise_variance)/std(NOISE)*NOISE; Y=X+NOISE; 其中X是纯信号,SNR是要求的信噪比,Y是带噪信号,NOISE是叠加在信号上的噪声。 2,把指定的噪声叠加到信号上去 有标准噪声库NOISEX-92,其中带有白噪声、办公室噪声、工厂噪声、汽车噪声、坦克噪声等等,在信号处理中往往需要把库中的噪声叠加到信号中去,而噪声的采样频率与纯信号的采样频率往往不一致,需要采样频率的校准。 function [Y,NOISE] = add_noisem(X,filepath_name,SNR,fs) % add_noisem add determinated noise to a signal. % X is signal, and its sample frequency is fs; % filepath_name is NOISE's path and name, and the SNR is signal to noise ratio in dB. [wavin,fs1,nbits]=wavread(filepath_name); if fs1~=fs wavin1=resample(wavin,fs,fs1);

PSO算法简介

粒子群算法简介 一、粒子群算法的历史 粒子群算法源于复杂适应系统(Complex Adaptive System,CAS)。CAS 理论于1994年正式提出,CAS中的成员称为主体。比如研究鸟群系统,每个鸟在这个系统中就称为主体。主体有适应性,它能够与环境及其他的主体进行交流,并且根据交流的过程“学习”或“积累经验”改变自身结构与行为。整个系统的演变或进化包括:新层次的产生(小鸟的出生);分化和多样性的出现(鸟群中的鸟分成许多小的群);新的主题的出现(鸟寻找食物过程中,不断发现新的食物)。 所以CAS系统中的主体具有4个基本特点(这些特点是粒子群算法发展变化的依据): ?首先,主体是主动的、活动的。 ?主体与环境及其他主体是相互影响、相互作用的,这种影响是系统发展变化的主要动力。 ?环境的影响是宏观的,主体之间的影响是微观的,宏观与微观要有机结合。 ?最后,整个系统可能还要受一些随机因素的影响。 粒子群算法就是对一个CAS系统---鸟群社会系统的研究得出的。 粒子群算法(Particle Swarm Optimization, PSO)最早是由Eberhart和Kennedy于1995年提出,它的基本概念源于对鸟群觅食行为的研究。设想这样一个场景:一群鸟在随机搜寻食物,在这个区域里只有一块食物,所有的鸟都不知道食物在哪里,但是它们知道当前的位置离食物还有多远。那么找到食物的最优策略是什么呢?最简单有效的就是搜寻目前离食物最近的鸟的周围区域。 PSO算法就从这种生物种群行为特性中得到启发并用于求解优化问题。在PSO中,每个优化问题的潜在解都可以想象成d维搜索空间上的一个点,我们称之为“粒子”(Particle),所有的粒子都有一个被目标函数决定的适应值(Fitness Value ),每个粒子还有一个速度决定他们飞翔的方向和距离,然后粒子们就追随当前的最优粒子在解空间中搜索。Reynolds对鸟群飞行的研究发现。鸟仅仅是追踪它有限数量的邻居但最终的整体结果是整个鸟群好像在一个中心的控制之下.即复杂的全局行为是由简单规则的相互作用引起的。 二、粒子群算法的具体表述 上面罗嗦了半天,那些都是科研工作者写论文的语气,不过,PSO的历史就像上面说的那样。下面通俗的解释PSO算法。

功率谱估计的MATLAB实现

实验功率谱估计 实验目的: 1、掌握最大熵谱估计的基本原理。 2、了解最终预测误差(FPE)准则。 3、掌握周期图谱估计的基本原理。 4、掌握传统谱估计中直接法与间接法之间的关系。 5、复习快速傅里叶变换与离散傅里叶变换之间关系。 实验内容: 1、设两正弦信号的归一化频率分别为0.175和0.20,用最大熵法编程计算信噪比S/N=30dB、N=32点时该信号的最大熵谱估计结果。 2、用周期图法编程计算上述信号的谱估计结果。 程序示例: 1、最大熵谱估计 clc; N=32; SNR=30; fs=1; t=1:N; t=t/fs; y=sin(2*pi*0.175*t)+sin(2*pi*0.20*t); x = awgn(y,SNR); M=1; P(M)=0; Rx(M)=0; for n=1:N P(M)=P(M)+(abs(x(n)))^2; ef(1,n)=x(n); eb(1,n)=x(n); end P(M)=P(M)/N; Rx(M)=P(M); M=2;

A=0; D=0; for n=M:N A=A+ef(M-1,n)*eb(M-1,n-1); D=D+(abs(ef(M-1,n)))^2+(abs(eb(M-1,n-1)))^2; end xishu=-2*A/D; a(M-1,M-1)=-2*A/D; P(M)=P(M-1)*(1-(abs(xishu))^2); FPE(M-1)=P(M)*(N+M)/(N-M); TH=FPE(M-1); for n=M:N ef(M,n)=ef(M-1,n)+xishu*eb(M-1,n-1); eb(M,n)=eb(M-1,n-1)+xishu*ef(M-1,n); end M=M+1; A=0; D=0; for n=M:N A=A+ef(M-1,n)*eb(M-1,n-1); D=D+(abs(ef(M-1,n)))^2+(abs(eb(M-1,n-1)))^2; end xishu=-2*A/D; a(M-1,M-1)=-2*A/D; P(M)=P(M-1)*(1-(abs(xishu))^2); FPE(M-1)=P(M)*(N+M)/(N-M); for m=1:M-2 a(M-1,m)=a(M-2,m)+xishu*a(M-2,M-1-m); end while FPE(M-1)

相关文档
相关文档 最新文档