📄 freqan.m
字号:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% "Fuzzy" model based on freq. analysis
% J. Abonyi and Hans Roubos (TU Delft)
% Dept. of Process Engineering
% University of Veszprem, Hungary
% abonyij@fmt.vein.hu
% www.vein.hu/~abonyij
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%______________________________________
%Load the data
clear all
close all
rand('state',0); %Training data
train=load('ticdata2000.txt');
out=train(:,end);
N=length(train);
test=load('ticeval2000.txt'); %Test data
tout=load('tictgts2000.txt');
Nt=length(test);
%Features
%feat=[5 16 47 51 59];
feat=[16 47 59];
%
%feat=1:85;
nf =length(feat);
train=[train(:,feat)];
test=[test(:,feat)];
%Model structure
Model=zeros(nf,45);
score=ones(size(out));
tscore=ones(size(tout));
%_______________________________
%Main
for fi=1:nf
%Calculation of the freq.
val=min(train(:,fi)):max(train(:,fi));
nv=length(val);
dim=zeros(nv,1);
for i=1:nv
index=find(train(:,fi)==val(i));
if isempty(index)
dim(i)=0;
else
dim(i)=sum(out(index))/size(index,1);
end
end
dim=dim/(max(dim)); %normalization of the mem. functions
%application of the model
for i=1:nv
index=find(train(:,fi)==val(i));
score(index)=score(index)*dim(i);
index=find(test(:,fi)==val(i));
tscore(index)=tscore(index)*dim(i);
end
%save the model parameters
Model(fi,1)=min(val);
Model(fi,2)=max(val);
for i=1:length(dim)
Model(fi,i+2)=dim(i);
end
subplot(2,ceil(nf/2),fi);
plot(val,dim);
ylabel(feat(fi));
axis([min(train(:,fi)) max(train(:,fi)) min(dim) max(dim)])
end
[c, inds]=sort(-score); %-
Nc=round(length(out)*0.2);
inds=inds(1:Nc);
err=sum(out(inds))/Nc*100
sel=sum(out(inds))
[c, inds]=sort(-tscore); %-
inds=inds(1:800);
terr=sum(tout(inds))/800*100
tsel=sum(tout(inds))
save Model Model
save feat feat
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -