📄 rbf_s.m
字号:
function [y,out,m,b,w,ff,gg]=RBF_s(center,Data)
x=Data(:,1:end-1);
x=x';
[p1,p2]=size(x);
y=Data(:,end);
y=y';
b=center(:,1:end-1);
b=b';
[m2,k]=size(b);
w=center(:,end);
w=w';
for i=1:p1,
for j=1:k,
if j==1,
m(i,j)=abs(b(i,1)-b(i,2))/(2.8284*((-log(0.4)).^(1/2)));
else
m(i,j)=abs(b(i,j)-b(i,j-1))/(2.8284*((-log(0.4)).^(1/2)));
end
end
end
for q=1:p2;
for i=1:p1,
for j=1:k;
u(i,j)=gaussmf(x(i,q),[m(i,j),b(i,j)]);
end
end
for i=1:k;
v(i)=1;
j=1;
while j<=p1,
v(i)=v(i)*u(j,i);
j=j+1;
end
end
out1(q)=w*v';
e(q)=(y(q)-out1(q));
end
out=out1;
E=(1/2)*sumsqr(y-out);
EE=E;
lr=0.1;
r=1;
p=1;
s=500;
while p<=s & EE>1e-10,
wc=zeros(1,k);
for i=1:p1,
for j=1:k;
u(i,j)=gaussmf(x(i,r),[m(i,j),b(i,j)]);
end
end
for i=1:k;
v(i)=1;
j=1;
while j<=p1,
v(i)=v(i)*u(j,i);
j=j+1;
end
end
for i=1:k;
wc(i)=lr*e(r)*v(i);
end
mc=zeros(p1,k);
for i=1:p1,
for j=1:k;
mc(i,j)=lr*e(r)*w(j)*v(j)*((x(i,r)-b(i,j)).^2)/(b(i,j).^3);
end
end
bc=zeros(p1,k);
for i=1:p1;
for j=1:k;
bc(i,j)=lr*e(r)*w(j)*v(j)*(x(i,r)-b(i,j))/(b(i,j).^2);
end
end
m=m+mc;
b=b+bc;
w=w+wc;
for q=1:p2;
for i=1:p1;
for j=1:k;
u(i,j)=gaussmf(x(i,q),[m(i,j),b(i,j)]);
end
end
for i=1:k;
v(i)=1;
j=1;
while j<=p1;
v(i)=v(i)*u(j,i);
j=j+1;
end
end
out1(q)=w*v';
end
out=out1;
p=p+1;
EE=(1/2)*sumsqr(y-out);
E(p)=EE;
r=r+1;
if r>p2
r=1;
end
e(r)=(y(r)-out(r));
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -