UFLDL课程学习(一)
章节地址:http://ufldl.stanford.edu/tutorial/supervised/LinearRegression/
章节名称:线性回归 (Linear Regression)
第一章没有难度大的内容,但是,我还是被深深的恶心到了,明明答案是正确的,却一直报错
Undefined function 'lbfgsAddC' for input arguments of type 'int32'.
查了一下,下面这篇文章的说法是对的:
http://blog.csdn.net/lingerlanlan/article/details/38377023?utm_source=tuicool
意思就是这个鬼程序调用了C语言函数,但是从GitHub上下载的代码里没有对这些C语言函数进行编译(可能是考虑到机器和系统),
具体的C语言代码在这个目录下: ..\common\minFunc_2012\minFunc\mex
编译方法是,直接在MATLAB控制台输入
mex filename
把目录下所有的文件都编译一遍吧,省的麻烦。然后你需要把编译生成的文件拷贝到 ..\common\minFunc_2012\minFunc 目录下(当然这是懒人的办法,把文件拷贝到执行文件目录下)
之后是代码和结果:
m=size(X,2); n=size(X,1); f=0; g=zeros(size(theta)); for row = 1:m curr_x = X(:,row); curr_y = y(:,row); f = f + (theta'*curr_x-curr_y)^2; g = g + curr_x.*(theta'*curr_x-curr_y); end % 这个方法更简单,但是矩阵运算不一定理解 % h = theta' * X - y; % f = (1/2) * h * h'; % g = X*h';