Octave 如何绘制线性回归成本函数的等高线图?

Octave 如何绘制线性回归成本函数的等高线图?,octave,Octave,我正在关注课程,其中一节课提供了一个成本函数的等值线图,用于一个变量的线性回归: 资料来源: 我认为从教育的角度来看,能够重现这张图表会很有用。我没有任何倍频程的经验,所以我需要一步一步的说明,我可以粘贴到倍频程命令窗口 这里有人能帮忙吗 更新: 我的结论如下: function cost = calc_cost (theta0, theta1) x = 1:10; y = x.*2; cost = arrayfun( @(t0, t1) ( 1/(length(x)) *

我正在关注课程,其中一节课提供了一个成本函数的等值线图,用于一个变量的线性回归:

资料来源:

我认为从教育的角度来看,能够重现这张图表会很有用。我没有任何倍频程的经验,所以我需要一步一步的说明,我可以粘贴到倍频程命令窗口

这里有人能帮忙吗


更新:

我的结论如下:

function cost = calc_cost (theta0, theta1)
   x = 1:10;
   y = x.*2;
   cost = arrayfun( @(t0, t1) ( 1/(length(x)) * sum( ((t0 + t1*x) - y).^2 )), theta0, theta1);
endfunction

[xx, yy] = meshgrid( -3000:50:3000, -3000:50:3000) ;
zz = calc_cost(xx, yy);
contour(xx, yy, zz )

如果无法重写成本函数,使其接受矩阵输入,则可以使用arrayfun:

function cost = calc_cost (theta0, theta1)
   x = 1:10;
   y = x.*2;
   cost = ( 1/(length(x)) * sum( ((theta0 + theta1*x) - y).^2 ) );
 endfunction

[x,y] = meshgrid (linspace(-5000,5000,20), linspace(-500,500,20));
z = arrayfun (@calc_cost, x, y);
contour (x, y, z)
print out.png
给予

看看
演示版
。您应该重写成本函数,以便它接受θ0和θ1的矩阵输入。我在函数中使用arrayfun提出了一个不同的解决方案。这就是你让我的函数接受矩阵的意思吗?