基於PCA和SVM的人臉識別系統-error修改
Undefined function or variable 'W'.
Error in classify (line 18)
xNewFace = xNewFace*W; % 經過pca變換降維
Error in GUIRecgFaceImage (line 3)
nClass = classify(filepath);
Error while evaluating uicontrol Callback
-------------------------------------------------
xNewFace = xNewFace*W; % 經過pca變換降維
classify.m函式的一句語句做修改,修改為
xNewFace = (xNewFace-meanVec)*V; % 經過pca變換降維
-------------------------------------------------
Error using svmclassify (line 53)
The first input should be a struct generated by SVMTRAIN.
Error in multiSVMClassify (line 29)
classes = svmclassify(CASVMStruct{iIndex}{jIndex},TestFace);
Error in test (line 36)
classes = multiSVMClassify(TestFace);
Error while evaluating uicontrol Callback
-------------------------------------------------
在執行程式之前,必須執行pathtool設定路徑,新增根路徑下的exportLibSVM,Kernel,PCA,SVM幾個資料夾。並且remove原來自己的libSVM。
matlab工具箱中svmtrain的用法
原來用的是libsvm的工具包,感覺很好用。
最近應為用到的核函式需要自己設定,所以轉到了matlab的自帶的svm函式。
目前用到的主要有兩個:
svmtrain和svmclassify。
其中具體的引數可以參考help。
有幾點應用的時候需要注意:
1.如果你原來安裝過libsvm需要先解除安裝掉。
方法是:在command window中輸入pathtool,在彈出的框中去掉libsvm的資料夾。
2.svmtrain的語法示例:
svmStruct = svmtrain(data(train,:),groups(train),'showplot',true,'Kernel_Function',‘rbf’ );
或:
svmStruct = svmtrain(data(train,:),groups(train),'showplot',true,'Kernel_Function','rbf' ,'RBF_Sigma',1.5);
但是如果用的是自編的函式的話,則為:
svmStruct = svmtrain(data(train,:),groups(train),'showplot',true,'Kernel_Function',@kfun);
最後的引數為自己設計的核函式,函式名字是kfun,作為引數不加引號。