matlab中libsvm训练的svm分类器model保存/读写文件接口

本文介绍了如何在MATLAB中利用libsvm训练SVM分类器后,通过mex函数封装libsvm的svm_save_model()和svm_load_model(),实现模型的保存到文件和从文件加载。通过编译生成的mex文件,可以使用savemodel('filename', model)和model = loadmodel('filename', num)在MATLAB中操作SVM模型。" 50847956,1346943,Oracle项目实战:表空间、用户权限与数据库对象创建,"['数据库管理', 'Oracle数据库', '数据库设计', 'SQL', '数据库实战']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近一直在用matlab和libsvm,发现libsvm库用起来还是很方便的,就是没有模型直接保存到文件和读取模型的matlab接口(C++的接口有)。由于有会用的Opencv等C/C++库,所以数据交换比较麻烦。看了一下libsvm的svm.h、svm.cpp文件,发现有svm_save_model(),svm_load_model()等函数。于是乎用mex小做封装,写了两个matlab可以直接调用的接口。


保存svm model到文件:(savemodel.c)

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include "svm.h"

#include "mex.h"
#include "svm_model_matlab.h"


void exit_with_help()
{
	mexPrintf(
	"Usage: savemodel('filename', model);\n"
	);
}

int savemodel(const char *filename, const mxArray *matlab_struct)
{
    const char *error_msg;
    struct svm_model* model;
    int result;
    model = matlab_matrix_to_model(matlab_struct, &error_msg);
    
    if (model == NULL)
    {
        mexPrintf("Error: can't read model: %s\n", error_msg);
    }
    
    result = svm_save_model(filename, model);
    
    if( result != 0 )
    {
        mexPrintf("Error: can't write model t
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值