📄 nlinregfun.m
字号:
%
%
function a1=LinRegFUN(a)
fid=fopen('a.dat','r');
n=fread(fid,1,'float'); % Length of data
e=fread(fid,1,'float'); % Tube wideth
sg=fread(fid,1,'float'); % A control parameter for radius based function
Fc=fread(fid,1,'short'); % Select kernel function 0-radius based, 1-polynomial
p=fread(fid,1,'short'); % Order of polynomial function
X=fread(fid,n,'float'); % Data of input
Y=fread(fid,n,'float'); % Data of output
fclose(fid);
% Transpose all data vector to be cunlum vector
DmX=size(a);
DmX=size(X);
DmY=size(Y);
if DmX(1)<DmX(2),
a=a';
end
if DmX(1)<DmX(2),
X=X';
end
if DmY(1)<DmY(2),
Y=Y';
end
if Fc==0,
% Radius based function
I=ones(1,length(X));
FUN=inline('-0.5*sum(sum( diag(a(1:n)-a(n+1:2*n))* exp(-(((X*I)-transpose(X*I)).^2)./sg) *diag(a(1:n)-a(n+1:2*n)) )) - e*sum(a) + transpose(Y)*(a(1:n)-a(n+1:2*n))','a','X','Y','n','e','I','sg');
a1=-FUN(a,X,Y,n,e,I,sg);
else
% Polynomial function
FUN=inline('-0.5*sum(sum( diag(a(1:n)-a(n+1:2*n))* ((X*transpose(X)-1).^p) *diag(a(1:n)-a(n+1:2*n)) )) - e*sum(a) + transpose(Y)*(a(1:n)-a(n+1:2*n))','a','X','Y','n','e','p');
a1=-FUN(a,X,Y,n,e,p);
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -