Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

New to MATLAB?

How to declare kfun function in svmtrain

Asked by Ikra89

Ikra89 (view profile)

on 13 Jun 2013

Hi all

i want to train data using polynomial kernel which have:

gamma, C, r, d.

svmtrain only has boxConstraint (C) and Polyorder (d)

so i have to declare function by my self using @kfun

i've tried many times but still got "*Function definitions are not permitted in this context.*"

where i must put this code?

function K = kfun(U,V,gamma,r)
K = gamma*(U*V')+r;

in command line and in .m script file I still got error like that

anybody can help me?

thanks before

1 Comment


Ahmed (view profile)

on 13 Jun 2013

You are probably trying to define a function in a script file. This is not possible. Put your function in a separate m-File called kfun.m or define an anonymous function.

kfun = @(U,V,gamma,r) gamma*(U*V')+r;

Ikra89 (view profile)


1 Answer

Answer by Ahmed

Ahmed (view profile)

on 6 Jul 2013
Edited by Ahmed

Ahmed (view profile)

on 6 Jul 2013
data = randn(100,10);
groups = rand(100,1)>0.5;
g = 1;
r = 1;
  svmstruct = svmtrain(data, groups, ...
'Kernel_Function',@(U,V) g*(U*V')+r,'BoxConstraint', 0.2);

(note that 'gamma' is pre-defined function, therefore you should better use another variable name)



Ahmed (view profile)

Contact us