type //定义结构体
svm_result=record
total_sv:integer;
alpha:array of pdouble;
index:array of pinteger;
rho: double;
sv:array of pdouble;
end;
function re_train(data:array of double; label1:pdouble;num:integer):svm_result;//函数
i,j,z:integer;
alpha:pdouble;
re:svm_result;
begin
SetLength(re.alpha,num);
SetLength(re.index ,num);
SetLength(re.sv ,num);
for i:=0 to num do
begin
re.alpha[i]^:=i;
re.index[i]^:=1;
re.sv[i]^:=1.0;
end;
re.rho:=3;
end;
求教各位,如何返回结果?
svm_result=record
total_sv:integer;
alpha:array of pdouble;
index:array of pinteger;
rho: double;
sv:array of pdouble;
end;
function re_train(data:array of double; label1:pdouble;num:integer):svm_result;//函数
i,j,z:integer;
alpha:pdouble;
re:svm_result;
begin
SetLength(re.alpha,num);
SetLength(re.index ,num);
SetLength(re.sv ,num);
for i:=0 to num do
begin
re.alpha[i]^:=i;
re.index[i]^:=1;
re.sv[i]^:=1.0;
end;
re.rho:=3;
end;
求教各位,如何返回结果?
提示错误是:[Error] Unit1.pas(74): Declaration of 'training' differs from previous declaration
i,j,z:integer;
alpha:pdouble;
begin
SetLength(result.alpha,num);
SetLength(result.index ,num);
SetLength(result.sv ,num);
for i:=0 to num do
begin
result.alpha[i]^:=i;
result.index[i]^:=1;
result.sv[i]^:=1.0;
end;
result.rho:=3;
end; 为什么要定义成 pdouble pinteger??
i,j,z:integer;
alpha:pdouble;
re:svm_result;
begin
SetLength(re.alpha,num);
SetLength(re.index ,num);
SetLength(re.sv ,num);
for i:=0 to num do
begin
re.alpha[i]^:=i;
re.index[i]^:=1;
re.sv[i]^:=1.0;
end;
re.rho:=3;
result:=re;
end;
type
TData = array of double;function re_train(data:TData; label1:pdouble;num:integer):svm_result;//函数
i,j,z:integer;
alpha:pdouble;
re:svm_result;
begin
SetLength(re.alpha,num);
SetLength(re.index ,num);
SetLength(re.sv ,num);
for i:=0 to num do
begin
re.alpha[i]^:=i;
re.index[i]^:=1;
re.sv[i]^:=1.0;
end;
re.rho:=3;
result:=re;
end; 调用:
var
myData : TData;
myResult : svm_result;
begin
初始化myData;
myResult := re_train(myData,.....);
end;//------------------------------------------
形参和实参定义时如果都是array of double,Delphi会认为这是两种数据类型,所以报错,因此要用TData来统一类型