2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > matlab中索引超过维度 索引超出矩阵维度怎么解决?

matlab中索引超过维度 索引超出矩阵维度怎么解决?

时间:2020-05-09 12:54:42

相关推荐

matlab中索引超过维度 索引超出矩阵维度怎么解决?

索引超出矩阵维度。

出错 reduceEI (line 3)

if any(M(1,:))

出错 EIsum (line 4)

f=reduceEI([[zeros(max(Msize(1),Nsize(1))-Msize(1),Msize(2));M],[zeros(max(Msize(1),Nsize(1))-Nsize(1),Nsize(2));N]]);

出错 ClassDescribe (line 9)

f1=EIsum(f1,f2);

出错 AFS_Iris_classify (line 33)

DescribeClass{k1}=ClassDescribe(XAttribute,ClassLength+1,ClassLength+ClassNum(k1));

clear

clc

TrainData_Mat=xlsread('train1');

TestData_Mat=xlsread('test1');

[TrainSampleNum,TrainAttributeNum]=size(TrainData_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(TrainData_Mat,Parameter_Mat);

Lou_Mat=ones(TrainSampleNum,6*TrainAttributeNum);

Logic_Ind=1;

Threshold_1=0.8;

Threshold_2=0.75;

NumK=1;

Error=0;

[Attribute_2,SimpleConcepts,SimpleMemships]=InitialDescribe(Lou_Mat,Str_Mat,Logic_Ind,Threshold_1,Threshold_2);%%Attribute_ensure

TrainClassLabel=[ones(1,140),2*ones(1,115)];

TestClassLabel=[ones(1,45),2*ones(1,40)];

XAttribute=SelectDescribe1(Attribute_2,TrainClassLabel,NumK,Error,Lou_Mat,Str_Mat,Logic_Ind);

ClassNum=histc(TrainClassLabel,unique(TrainClassLabel));% 计算每一类有多少个样本及类的个数

ClassLength=0;

for k1=1:length(ClassNum)

DescribeClass{k1}=ClassDescribe(XAttribute,ClassLength+1,ClassLength+ClassNum(k1));

ClassLength=ClassLength+ClassNum(k1);

end

for k2=1:length(ClassNum)

TrainMemberships1(k2,:)=degree(Lou_Mat,Str_Mat,DescribeClass{k2},Logic_Ind);%初次约剪后在训练集中的隶属度

end

[TrainCorrectRate1,ClassAccuaryNum1,ClassAccuary1,ComparaMatrix1,ErrorVector1]=ClassifyTestAFS(TrainMemberships1,TrainClassLabel);

[TestSampleNum,TestAttributeNum]=size(TestData_Mat);

TestStr_Mat=gen_structure(TestData_Mat,Parameter_Mat);

TestLou_Mat=ones(TestSampleNum,6*TestAttributeNum);

for k4=1:length(ClassNum)

TestMemberships1(k4,:)=degree(TestLou_Mat,TestStr_Mat,DescribeClass{k4},Logic_Ind);%初次约剪后在测试集中的隶属度

end

[TestCorrectRate1,TestClassAccuaryNum1,TestClassAccuary1,TestComparaMatrix1,TestErrorVector1]=ClassifyTestAFS(TestMemberships1,TestClassLabel);

TrainCorrectRate1

TestCorrectRate1

TestClassAccuaryNum1

function N=reduceEI(M)

if any(M(1,:))

error('the first row of input matrix must be zeros.')

end

M=compactEI(M);

M=tran_bool(M);

Reserve_EI=reduceEI_bool(M);

N=tran_EI_mat(Reserve_EI);

return

function f=EIsum(M,N)

Msize=size(M);

Nsize=size(N);

f=reduceEI([[zeros(max(Msize(1),Nsize(1))-Msize(1),Msize(2));M],[zeros(max(Msize(1),Nsize(1))-Nsize(1),Nsize(2));N]]);

return

function F=ClassDescribe(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);

end

else

for Index=i-1:-1:j

f2=X_attribute{Index};

f1=EIsum(f1,f2);

end

end

F=reduceEI(f1);

return;

求大触帮助,查了好多,关于这个“索引超出矩阵维度”到底应该怎么改代码?有时候输入数据量小一些就不会出现超出维度的情况,为什么啊?

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。