nano_zombie
2015-03-07, 23:38
最近用svm做分类,一直不知道下面的程序错在哪里,还望指教
function p=dividetest(datatrain,datatest,order)
%本函数用来对MASTAR里的SAR图像进行分类
%p=dividetest(datatrain,datadivide)
%输入:datatrain 训练样本数据 由dataread读取
% :datadivide 测试样本数据 由datadivide读取
% :order 进行分数阶变换的阶数
%输出:p 分类成功率
%计算训练样本的分数阶傅里叶变换,并计算Hu矩
n=size(datatrain,1);
hudatatt=zeros(n,7); %hu of datatrain's transform
for i=1:n
hudatatt(i,:)=Hu(DTFrFT2(abs(datatrain{i,1}),order));
end
%训练svm
svmStruct=svmtrain(hudatatt,datatrain{:,2});
%计算测试样本的分数阶傅里叶变换,并计算Hu矩
m=size(datatest,1);
hudatadt=zeros(m,7); %hu of datadivide's transform
for i=1:m
hudatadt(i,:)=Hu(DTFrFT2(abs(datatest{i,1}),order));
end
C=svmclassify(svmStruct,hudatadt);
p=1-sum(datatest~=C)/m;
报错信息是:
Error using svmtrain (line 253)
Y and TRAINING must have the same number of rows.
其中datatest,dataread是原胞数组,第二列存的的都类型信息;
function p=dividetest(datatrain,datatest,order)
%本函数用来对MASTAR里的SAR图像进行分类
%p=dividetest(datatrain,datadivide)
%输入:datatrain 训练样本数据 由dataread读取
% :datadivide 测试样本数据 由datadivide读取
% :order 进行分数阶变换的阶数
%输出:p 分类成功率
%计算训练样本的分数阶傅里叶变换,并计算Hu矩
n=size(datatrain,1);
hudatatt=zeros(n,7); %hu of datatrain's transform
for i=1:n
hudatatt(i,:)=Hu(DTFrFT2(abs(datatrain{i,1}),order));
end
%训练svm
svmStruct=svmtrain(hudatatt,datatrain{:,2});
%计算测试样本的分数阶傅里叶变换,并计算Hu矩
m=size(datatest,1);
hudatadt=zeros(m,7); %hu of datadivide's transform
for i=1:m
hudatadt(i,:)=Hu(DTFrFT2(abs(datatest{i,1}),order));
end
C=svmclassify(svmStruct,hudatadt);
p=1-sum(datatest~=C)/m;
报错信息是:
Error using svmtrain (line 253)
Y and TRAINING must have the same number of rows.
其中datatest,dataread是原胞数组,第二列存的的都类型信息;