版本:libsvm3.3

Matlab:R2019b

安装libsvm后运行代码svmtrain函数时候提示svmtrain已被删除, 请改用fitcsvm解,提示和matlab以前版本函数冲突导致,不处理该提示也可正常运行。

libsvm中的svmtrain可能与matlab自带的svmtrain 冲突了。

解决方案:

1.打开libsvm下matlab文件夹,找到make.m文件。

% This make.m is for MATLAB and OCTAVE under Windows, Mac, and Unix
function make()
try
	% This part is for OCTAVE
	if (exist ('OCTAVE_VERSION', 'builtin'))
		mex libsvmread.c
		mex libsvmwrite.c
		mex -I.. svmtrain.c ../svm.cpp svm_model_matlab.c
		mex -I.. svmpredict.c ../svm.cpp svm_model_matlab.c
	% This part is for MATLAB
	% Add -largeArrayDims on 64-bit machines of MATLAB
	else
		mex -largeArrayDims libsvmread.c
		mex -largeArrayDims libsvmwrite.c
		mex -I.. -largeArrayDims svmtrain.c ../svm.cpp svm_model_matlab.c
		mex -I.. -largeArrayDims svmpredict.c ../svm.cpp svm_model_matlab.c
	end
catch err
	fprintf('Error: %s failed (line %d)\n', err.stack(1).file, err.stack(1).line);
	disp(err.message);
	fprintf('=> Please check README for detailed instructions.\n');
end

替换为:

% This make.m is for MATLAB and OCTAVE under Windows, Mac, and Unix
function make()
try
	% This part is for OCTAVE
	if (exist ('OCTAVE_VERSION', 'builtin'))
		mex libsvmread.c
		mex libsvmwrite.c
		mex -I.. svmtrain.c ../svm.cpp svm_model_matlab.c
		mex -I.. svmpredict.c ../svm.cpp svm_model_matlab.c
	% This part is for MATLAB
	% Add -largeArrayDims on 64-bit machines of MATLAB
	else
		mex -largeArrayDims libsvmread.c
		mex -largeArrayDims libsvmwrite.c
		mex -I.. -largeArrayDims libsvmtrain.c ../svm.cpp svm_model_matlab.c
		mex -I.. -largeArrayDims libsvmpredict.c ../svm.cpp svm_model_matlab.c
	end
catch err
	fprintf('Error: %s failed (line %d)\n', err.stack(1).file, err.stack(1).line);
	disp(err.message);
	fprintf('=> Please check README for detailed instructions.\n');
end

将svmtrain替换为libsvmtrain,svmpredict替换为libsvmpredict。

2.打开libsvm下matlab文件夹,将svmtrain.c文件改名为libsvmtrain.c,将svmpredict.c改名为libsvmpredict.c。

3.在Matlab中执行

mex -setup

make

4.执行成功后,svmtrain方法名便改为libsvmtrain,即可去除错误提示。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐