索引超出了矩阵维。
错误reduceei(line3)。
ifany(m ) 1, ) )
错误eisum(line4) )。
f=reduce ei ([ zeros (max (msize (2(1,Nsize(1)1)-Msize(1) 1,msize )2) ] m )、[Zeros(max(msize(1) ) n ) );
错误类描述(line9) )。
F1=Eisum(F1,f2 );
错误AFS_iris_classify(line33 ) ) )。
describe class { K1 }=class describe (xattribute,ClassLength 1,classlengthclassnum ) k1 );
清除
clc
traindata_mat=xlsread(train1);
testdata_mat=xlsread('test1);
[TrainSampleNum,trainattributenum ]=size (train data _ mat );
Parameter_Mat=[0.8 0.5 0.2;
0.8 0.5 0.2;
0.8 0.5 0.2;
0.8 0.5 0.2;
0.8 0.5 0.2;
0.8 0.5 0.2;
0.8 0.5 0.2;
0.8 0.5 0.2;
0.8 0.5 0.2] );
str _ mat=gen _ structure (train data _ mat,Parameter_Mat );
lou_mat=ones(trainsamplenum,6*TrainAttributeNum );
Logic_Ind=1;
Threshold_1=0.8;
Threshold_2=0.75;
NumK=1;
错误=0;
[Attribute_2,SimpleConcepts,simplememships ]=initial describe (Lou _ mat,Str_Mat,Logic_Ind,threshold _ theshold )
trainclasslabel=[ ones (1,140 ),2*Ones ) 1,115 ] ]
test class label=[ ones (1,45 ),2*Ones ) 1,40 ];
xtribute=select describe1(attribute _ 2,TrainClassLabel,NumK,Error,Lou_Mat,Str_Mat,Logic_Ind );
classnum=histc(trainclasslabel,unique ) trainclasslabel ); %计算每班有多少样品和班的个数
ClassLength=0;
fork1=1:length(classnum ) ) ) ) ) ) ) ) ) ) ) ) )。
describe class { K1 }=class describe (xattribute,ClassLength 1,classlengthclassnum ) k1 );
classlength=classlengthclassnum (k1 );
结束
forK2=1:length(classnum ) ) ) ) )。
train memberships1(k2, )=degree(lou_mat,Str_Mat,DescribeClass{k2},Logic_Ind ); %首次切割后在训练集中的隶属度
结束
[TrainCorrectRate1,ClassAccuaryNum1,ClassAccuary1,ComparaMatrix1,error vector1]=classifytestafs (train memberships1)
[TestSampleNum,testattributenum ]=size (test data _ mat );
test str _ mat=gen _ structure (test data _ mat,Parameter_Mat );
testlou_mat=Ones(testsamplenum,6*TestAttributeNum );
forK4=1:length(classnum ) ) ) ) ) ) ) ) ) ) )。
test memberships1(k4, )=degree(testlou_mat,TestStr_Mat,DescribeClass{k4},Logic_Ind ); %初次切割后在测试集中的隶属度
结束
[TestCorrectRate1,TestClassAccuaryNum1,TestClassAccuary1,TestComparaMatrix1,testerrorvector1]=classifytestafs (tes )
TrainCorrectRate1
TestCorrectRate1
TestClassAccuaryNum1
函数n=reduce ei (m ) )。
ifany(m ) 1, ) )
error (' thefirstrowofinputmatrixmustbezeros.' )
结束
m=compactei(m;
m=Tran_bool(m;
reserve_ei=reduceei_bool(m;
n=tran_ei_mat(reserve_ei );
返回
functionf=eisum(m,n ) ) ) ) ) ) ) ) ) ) ) functionf=eisum(m,n )。
msize=size(m;
nsize=size(n;
f=reduce ei ([ zeros (max (msize (2(1,Nsize(1)1)-Msize(1) 1,msize )2) ] m )、[Zeros(max(msize(1) ) n ) );
返回
函数f=class describe (x _ attribute,I,j ) )。
%X_attribute是一个行向量的单元格数组,按相同类型的说明分段放置
%属性矩阵(单元格数组) )
每个%i,j类的起点、终点
f1=X_attribute{i};
if(I=j ) )。
for Index=i 1:j
f2=X_attribute{Index};
F1=Eisum(F1,f2 );
结束
else
for Index=i-1:-1:j
f2=X_attribute{Index};
F1=Eisum(F1,f2 );
结束
结束
f=reduceei(F1;
返回;
寻求大接触的帮助,我调查了很多,对于这个“索引超过了矩阵的维度”,到底应该怎么改变代码呢? 为什么输入数据量少的话有时不会超过维度?