如何在求和函数中访问数组元素?
How are array elements accessed in summing function?
我正在尝试在 Octave 中实现以下算法:
此算法的代码:
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
是当前迭代?
每当总和看起来像
sum(a_i * b_i, for i = 1 ... m)
可以改写为向量之间的点积
A^T * B
其中 A 和 B 是大小为 m 的向量。
在算法描述中,他们使用第一个公式,在代码中,它是第二个。
(x * theta) - y)' * x
是向量 (x * theta) - y)
和 x
之间的点积。
我正在尝试在 Octave 中实现以下算法:
此算法的代码:
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
是当前迭代?
每当总和看起来像
sum(a_i * b_i, for i = 1 ... m)
可以改写为向量之间的点积
A^T * B
其中 A 和 B 是大小为 m 的向量。 在算法描述中,他们使用第一个公式,在代码中,它是第二个。
(x * theta) - y)' * x
是向量 (x * theta) - y)
和 x
之间的点积。