2014-01-27 69 views
0

我有31款的我想每一个保存在一个特定的文件保存SVM模型文件MATLAB

这是我的matlab函数

formatspec='model%d' 
for k = 1:length(libsvmFiles) 
baseFileName = libsvmFiles(k).name; 
fullFileName = fullfile(myFolder, baseFileName); 
[labels train]=libsvmread(fullFileName); 
model=svmtrain(labels,train, '-t 2 -h 0'); 
file=sprintf(formatspec,k); 
save file model; 

但问题是只有第一个文件被保存它的名字是'文件'这意味着变量file的值不评估

我该如何解决这个问题?

+0

您的代码不完整且格式不正确。而且,你遇到的问题与libsvm无关。尽管如此,我仍然能够找出问题所在。 :-) –

回答

3

许多Matlab函数,save可以以函数形式(save(...))或命令形式(save ...)使用。在您使用的命令形式中,所有参数都被解释为字符串。这意味着

save file model 

相当于

save('file', 'model') 

对于正确的第二个参数,因为你要引用变量与“模式”。对于第一个参数是错误的,因为您要参考中包含的文件名变量file。因此,使用正确的语法是

save(file, 'model') 
0

您错过了保存功能的参数。 model变量也需要作为字符串列出,因为您需要告知save函数变量的名称,而不是变量本身。参见Matlab的documentation

save(file, 'model');

另外,你没有结束你的显示循环for,通常也只是抛出一个错误 - 但后来的代码可能会导致这个循环,而不是只运行一次。否则,你应该检查你的libsvmFiles变量,因为它可能只有长度1或不是数组。

+0

'model'是要保存的变量的名称,因此应加引号。看到我的答案。 :-) –

+0

是的,你是对的 - 将补充说! – Pyrce