womennimen
2011-04-24, 19:26
我的代码如下:
>> a=newfis('fuzzf');
>> a=addvar(a,'input','distance',[-5 5]);
>> a=addmf(a,'input',1,'VC','trimf',[-5 -5 -2]);
>> a=addmf(a,'input',1,'C','trimf',[-5 -2 0]);
>> a=addmf(a,'input',1,'ZO','trimf',[-2 0 2]);
>> a=addmf(a,'input',1,'F','trimf',[0 2 5]);
>> a=addmf(a,'input',1,'VF','trimf',[2 5 8]);
>>
>> a=addvar(a,'input','acceleratison',[0 4]);
>> a=addmf(a,'input',2,'SA','gaussmf',[1 0]);
>> a=addmf(a,'input',2,'MA','gaussmf',[1 2]);
>> a=addmf(a,'input',2,'LA','gaussmf',[1 4]);
>>
>> a=addvar(a,'output','safe',[-1 1]);
>> a=addmf(a,'output',1,'D','trimf',[-1 -1 0]);
>> a=addmf(a,'output',1,'M','trimf',[-1 0 1]);
>> a=addmf(a,'output',1,'S','trimf',[0 1 1]);
>>
>> rulelist=[1 1 2 1 1;
1 2 2 1 1;
1 3 3 1 1;
1 4 3 1 1;
1 5 3 1 1;
2 1 2 1 1;
2 2 2 1 1;
2 3 2 1 1;
2 4 3 1 1;
2 5 3 1 1;
3 1 1 1 1;
3 2 1 1 1;
3 3 1 1 1;
3 4 2 1 1;
3 5 3 1 1];
>> a1=setfis(a,'defuzzmethod','mom');
>> writefis(a1,'fuzzf');
>> a2=readfis('fuzzf');
>> disp('------------------------------------------------------');
------------------------------------------------------
>> disp(' fuzzy controller table:distance=[-5,+5],acceleratison=[0,+4]');
fuzzy controller table:distance=[-5,+5],acceleratison=[0,+4]
>> disp('----------------------------------------------------------');
----------------------------------------------------------
>> ulist=zeros(5,11);
>> for i=1:5
for j=1:11
acceleratison(i)=-1+i;
distance(j)=-6+j;
ulist(i,j)=evalfis([acceleratison(i),distance(j)],a2);
end
end
结果提示错误:
Warning: Some input values are outside of the specified input range.
> In evalfis at 73
??? Calloc error in fisCreateMatrix!
Error in ==> evalfis at 81
[output,IRR,ORR,ARR] = evalfismex(input, fis, numofpoints);
我想生成一个5行11列的查询表,请问这错误应该怎么修改?
>> a=newfis('fuzzf');
>> a=addvar(a,'input','distance',[-5 5]);
>> a=addmf(a,'input',1,'VC','trimf',[-5 -5 -2]);
>> a=addmf(a,'input',1,'C','trimf',[-5 -2 0]);
>> a=addmf(a,'input',1,'ZO','trimf',[-2 0 2]);
>> a=addmf(a,'input',1,'F','trimf',[0 2 5]);
>> a=addmf(a,'input',1,'VF','trimf',[2 5 8]);
>>
>> a=addvar(a,'input','acceleratison',[0 4]);
>> a=addmf(a,'input',2,'SA','gaussmf',[1 0]);
>> a=addmf(a,'input',2,'MA','gaussmf',[1 2]);
>> a=addmf(a,'input',2,'LA','gaussmf',[1 4]);
>>
>> a=addvar(a,'output','safe',[-1 1]);
>> a=addmf(a,'output',1,'D','trimf',[-1 -1 0]);
>> a=addmf(a,'output',1,'M','trimf',[-1 0 1]);
>> a=addmf(a,'output',1,'S','trimf',[0 1 1]);
>>
>> rulelist=[1 1 2 1 1;
1 2 2 1 1;
1 3 3 1 1;
1 4 3 1 1;
1 5 3 1 1;
2 1 2 1 1;
2 2 2 1 1;
2 3 2 1 1;
2 4 3 1 1;
2 5 3 1 1;
3 1 1 1 1;
3 2 1 1 1;
3 3 1 1 1;
3 4 2 1 1;
3 5 3 1 1];
>> a1=setfis(a,'defuzzmethod','mom');
>> writefis(a1,'fuzzf');
>> a2=readfis('fuzzf');
>> disp('------------------------------------------------------');
------------------------------------------------------
>> disp(' fuzzy controller table:distance=[-5,+5],acceleratison=[0,+4]');
fuzzy controller table:distance=[-5,+5],acceleratison=[0,+4]
>> disp('----------------------------------------------------------');
----------------------------------------------------------
>> ulist=zeros(5,11);
>> for i=1:5
for j=1:11
acceleratison(i)=-1+i;
distance(j)=-6+j;
ulist(i,j)=evalfis([acceleratison(i),distance(j)],a2);
end
end
结果提示错误:
Warning: Some input values are outside of the specified input range.
> In evalfis at 73
??? Calloc error in fisCreateMatrix!
Error in ==> evalfis at 81
[output,IRR,ORR,ARR] = evalfismex(input, fis, numofpoints);
我想生成一个5行11列的查询表,请问这错误应该怎么修改?