如何在求和函数中访问数组元素?

时间:2015-07-17 10:25:10

标签: octave

我试图在Octave中实现以下算法:

enter image description here

此算法的代码:

    x = [1
2
3
]

    y = [4,5,6]



m = length(y)

x = [ones(m , 1) , x]

theta = zeros(2, 1);        
printf(mat2str(theta , 2))
sprintf('%f' , theta)

iterations = 5;
alpha = 0.07;

for iter = 1:iterations
     theta
     theta = theta -((1/m) * ((x * theta) - y)' * x)' * alpha;
end

如何访问y的每个单独值,因为上面的代码似乎在每次迭代中访问整个y矩阵?

是否有一些隐含的功能同意允许仅使用y而不使用像y[i]那样i是当前迭代的东西?

1 个答案:

答案 0 :(得分:1)

每当总和看起来像

sum(a_i * b_i, for i = 1 ... m)

它可以重写为矢量之间的点积

A^T * B

A和B是大小为m的向量。 在算法描述中,他们使用第一个公式,在代码中,它是第二个。

(x * theta) - y)' * x

是向量(x * theta) - y)x之间的点积。

相关问题