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';

 

posted @ 2015-04-22 20:30  Neral  阅读(991)  评论(0编辑  收藏  举报