MATLAB Answers


How to declare kfun function in svmtrain

Asked by Ikra89
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

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;

1 Answer

Answer by Ahmed
on 6 Jul 2013
Edited by Ahmed
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)


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

MATLAB Academy

New to MATLAB?

Learn MATLAB today!