基于MATLAB的径向基网络源程序Word文档格式.docx

上传人:wj 文档编号:8432347 上传时间:2023-05-11 格式:DOCX 页数:5 大小:25.95KB
下载 相关 举报
基于MATLAB的径向基网络源程序Word文档格式.docx_第1页
第1页 / 共5页
基于MATLAB的径向基网络源程序Word文档格式.docx_第2页
第2页 / 共5页
基于MATLAB的径向基网络源程序Word文档格式.docx_第3页
第3页 / 共5页
基于MATLAB的径向基网络源程序Word文档格式.docx_第4页
第4页 / 共5页
基于MATLAB的径向基网络源程序Word文档格式.docx_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

基于MATLAB的径向基网络源程序Word文档格式.docx

《基于MATLAB的径向基网络源程序Word文档格式.docx》由会员分享,可在线阅读,更多相关《基于MATLAB的径向基网络源程序Word文档格式.docx(5页珍藏版)》请在冰点文库上搜索。

基于MATLAB的径向基网络源程序Word文档格式.docx

0.08:

4;

TestSamOut=1.1*(1-TestSamIn+2*TestSamIn.^2).*exp(-TestSamIn.^2/2);

figure

holdon

grid

plot(SamIn,SamOut,'

k+'

plot(TestSamIn,TestSamOut,'

k--'

xlabel('

Inputx'

);

ylabel('

Outputy'

Centers=SamIn(:

1:

ClusterNum);

NumberInClusters=zeros(ClusterNum,1);

%各类中的样本数,初始化为零

IndexInClusters=zeros(ClusterNum,SamNum);

%各类所含样本的索引号

while1,

%按最小距离原则对所有样本进行分类

fori=1:

SamNum

AllDistance=dist(Centers'

SamIn(:

i));

[MinDist,Pos]=min(AllDistance);

NumberInClusters(Pos)=NumberInClusters(Pos)+1;

IndexInClusters(Pos,NumberInClusters(Pos))=i;

end

%保存旧的聚类中心

OldCenters=Centers;

ClusterNum

Index=IndexInClusters(i,1:

NumberInClusters(i));

Centers(:

i)=mean(SamIn(:

Index)'

)'

;

%判断新旧聚类中心是否一致,是则结束聚类

EqualNum=sum(sum(Centers==OldCenters));

ifEqualNum==InDim*ClusterNum,

break,

%计算各隐节点的扩展常数(宽度)

AllDistances=dist(Centers'

Centers);

%计算隐节点数据中心间的距离(矩阵)

Maximum=max(max(AllDistances));

%找出其中最大的一个距离

ClusterNum%将对角线上的0替换为较大的值

AllDistances(i,i)=Maximum+1;

Spreads=Overlap*min(AllDistances)'

%以隐节点间的最小距离作为扩展常数

%计算各隐节点的输出权值

Distance=dist(Centers'

SamIn);

%计算各样本输入离各数据中心的距离

SpreadsMat=repmat(Spreads,1,SamNum);

HiddenUnitOut=radbas(Distance./SpreadsMat);

%计算隐节点输出阵

HiddenUnitOutEx=[HiddenUnitOut'

ones(SamNum,1)]'

%考虑偏移

W2Ex=SamOut*pinv(HiddenUnitOutEx);

%求广义输出权值

W2=W2Ex(:

%输出权值

B2=W2Ex(:

ClusterNum+1);

%偏移

%测试

TestDistance=dist(Centers'

TestSamIn);

TestSpreadsMat=repmat(Spreads,1,TestSamNum);

TestHiddenUnitOut=radbas(TestDistance./TestSpreadsMat);

TestNNOut=W2*TestHiddenUnitOut+B2;

plot(TestSamIn,TestNNOut,'

k-'

W2

B2

2.基于梯度法的RBF网设计算法

%训练样本数

TargetSamNum=101;

UnitNum=10;

%隐节点数

MaxEpoch=5000;

%最大训练次数

E0=0.9;

%目标误差

TargetIn=-4:

TargetOut=1.1*(1-TargetIn+2*TargetIn.^2).*exp(-TargetIn.^2/2);

plot(TargetIn,TargetOut,'

Center=8*rand(InDim,UnitNum)-4;

SP=0.2*rand(1,UnitNum)+0.1;

W=0.2*rand(1,UnitNum)-0.1;

lrCent=0.001;

%隐节点数据中心学习系数

lrSP=0.001;

%隐节点扩展常数学习系数

lrW=0.001;

%隐节点输出权值学习系数

ErrHistory=[];

%用于记录每次参数调整后的训练误差

forepoch=1:

MaxEpoch

AllDist=dist(Center'

SPMat=repmat(SP'

1,SamNum);

UnitOut=radbas(AllDist./SPMat);

NetOut=W*UnitOut;

Error=SamOut-NetOut;

%停止学习判断

SSE=sumsqr(Error)

%记录每次权值调整后的训练误差

ErrHistory=[ErrHistorySSE];

ifSSE<

E0,break,end

UnitNum

CentGrad=(SamIn-repmat(Center(:

i),1,SamNum))...

*(Error.*UnitOut(i,:

)*W(i)/(SP(i)^2))'

SPGrad=AllDist(i,:

).^2*(Error.*UnitOut(i,:

)*W(i)/(SP(i)^3))'

WGrad=Error*UnitOut(i,:

Center(:

i)=Center(:

i)+lrCent*CentGrad;

SP(i)=SP(i)+lrSP*SPGrad;

W(i)=W(i)+lrW*WGrad;

TestDistance=dist(Center'

TargetIn);

TestSpreadsMat=repmat(SP'

1,TargetSamNum);

TestNNOut=W*TestHiddenUnitOut;

plot(TargetIn,TestNNOut,'

%绘制学习误差曲线

[xx,Num]=size(ErrHistory);

plot(1:

Num,ErrHistory,'

3.基于OLS的RBF网设计算法

SP=0.6;

%隐节点扩展常数

ErrorLimit=0.9;

[InDim,MaxUnitNum]=size(SamIn);

%样本输入维数和最大允许隐节点数

%计算隐节点输出阵

Distance=dist(SamIn'

HiddenUnitOut=radbas(Distance/SP);

PosSelected=[];

VectorsSelected=[];

HiddenUnitOutSelected=[];

%用于记录每次增加隐节点后的训练误差

VectorsSelectFrom=HiddenUnitOut;

dd=sum((SamOut.*SamOut)'

fork=1:

MaxUnitNum

%计算各隐节点输出矢量与目标输出矢量的夹角平方值

PP=sum(VectorsSelectFrom.*VectorsSelectFrom)'

Denominator=dd*PP'

[xxx,SelectedNum]=size(PosSelected);

ifSelectedNum>

0,

[lin,xxx]=size(Denominator);

Denominator(:

PosSelected)=ones(lin,1);

Angle=((SamOut*VectorsSelectFrom).^2)./Denominator;

%选择具有最大投影的矢量,得到相应的数据中心

[value,pos]=max(Angle);

PosSelected=[PosSelectedpos];

%计算RBF网训练误差

HiddenUnitOutSelected=[HiddenUnitOutSelected;

HiddenUnitOut(pos,:

)];

HiddenUnitOutEx=[HiddenUnitOutSelected;

ones(1,SamNum)];

%用广义逆求广义输出权值

k);

%得到输出权值

k+1);

%得到偏移

NNOut=W2*HiddenUnitOutSelected+B2;

%计算RBF网输出

SSE=sumsqr(SamOut-NNOut)

%记录每次增加隐节点后的训练误差

ifSSE<

ErrorLimit,break,end

%作Gram-Schmidt正交化

NewVector=VectorsSelectFrom(:

pos);

ProjectionLen=NewVector'

*VectorsSelectFrom/(NewVector'

*NewVector);

VectorsSelectFrom=VectorsSelectFrom-NewVector*ProjectionLen;

UnitCenters=SamIn(PosSelected);

%%%%%%%%%%%

TestDistance=dist(UnitCenters'

%%%%%%%%

TestHiddenUnitOut=radbas(TestDistance/SP);

k

UnitCenters

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高等教育 > 军事

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2