matlab调用函数出错,调用函数时为什么老是出错

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

global ParticalNum

%function [BestPosition,bestadapt,bestadaption,t] = PSO(ParticalNum,iterator)

ParticalNum=5;

pbest=zeros(1,ParticalNum);   %初始化各项参数,预分配空间

gbest=0;%自己到目前的为止发现的最好位置

pMax=zeros(1,ParticalNum);

gMax=0;

adapt=zeros(1,ParticalNum);

t=1;

samecount=0;

flag=0;

p = zeros(1,ParticalNum);

v = ones(1,ParticalNum);

for i=1:ParticalNum   %初始化粒子位置、速度,计算适应值

p(i)=rand(1,1);    %初始化粒子群位置

v(i)=0.1;          %初始化速度

fi=GetAdaption(p(i)); %计算各粒子的适应值

adapt(i)=fi;

pMax(i)=adapt(i);   %第i个粒子的最大峰值信噪比

pbest(i)=p(i);      %第i个粒子的最好位置

if pMax(i)>gMax    %每个粒子的峰值信噪比与全局最高的峰值信噪比做比较

gbest=pbest(i); %把当前的峰值信噪比作为新的全局最优解

gMax=pMax(i);

end

bestp(1)=gbest;

besta(1)=gMax;

end

while   flag==0&t

t=t+1;    %迭代次数加1

for i=1:ParticalNum

[speed]=newv(v(i),p(i),pbest(i),gbest);   %更新粒子速度

v(i)=speed;          %第i个粒子的速度

[position]=newpp(p(i),v(i));    %更新粒子位置

p(i)=position;

fi=GetAdaption(p(i));    %计算各粒子适应值

adapt(i)=fi;

if adapt(i)>pMax(i)    %比较适应值

pMax(i)=adapt(i);   %更新个体极值

pbest(i)=p(i);

end

if pMax(i)>gMax    %比较适应值

gbest=pbest(i);    %更新全局极值

gMax=pMax(i);

end

end

bestp(t)=gbest;

besta(t)=gMax;

if bestp(t)==bestp(t-1)   %记录相同个体位置次数

samecount=samecount+1;

end

if samecount==5

flag=1;   %收敛标志

end

end

BestPosition=gbest;

bestadapt=bestp;

bestadaption=besta;

Error in ==> Mero at 20

for i=1-STRCs:Pheight-STRCe

??? Output argument "Pnew" (and maybe others) not assigned during call to "F:\chengxu\Mero.m>Mero".

Error in ==> GetAdaption at 12

PE=Mero(Panois,STRC,Pwidth,Pheight,STRCs,STRCe);   %均衡腐蚀

Error in ==> PSO at 20

fi=GetAdaption(p(i)); %计算各粒子的适应值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值