我有一些函数依赖于每个函数,函数来自本书第136页http://www.cs.helsinki.fi/u/ahyvarin/papers/bookfinal_ICA.pdf ..我的函数如下所示,如何在matlab中编写以下函数?
y(t) = W(t-1)*x(t)
h(t) = P(t-1)*y(t)
P(t)=(1/B)*Tri[P(t-1)-m(t)*h^T(t)]
m(t) = h(t)/(B+y^T(t))*h(t))
e(t) = x(t)-W^T(t-1)*y(t)
W(t) = W(t-1) + m(t)*e^T(t)
迭代地解决权重矩阵W(t)..我试着在matlab中这样做,但我没有工作,所以可能你可以建议纠正代码:
for i=1:10
e=randn(3,5000);
A=[1 0 0;-0.5 0.5 0;0.3 0.1 0.1];
x=A*e;
y(t) = W(t-1)*x(t)
h(t) = P(t-1)*y(t)
P(t)=(1/B)*Tri[P(t-1)-m(t)*h^T(t)]
m(t) = h(t)/(B+y^T(t))*h(t))
e(t) = x(t)-W^T(t-1)*y(t)
W(t) = W(t-1) + m(t)*e^T(t)
end
由于
答案 0 :(得分:0)
确定。我无法理解你想要什么,但你的代码表明你不了解某些时刻。我会试着向你澄清一些时刻:
for i = 2:10
x = rand(3);
y = W(:,:,i-1)*x;
h = P(:,:,i-1)*y;
m=h/(1+y'*h);
P(:,:,i)=P(:,:,i-1)*m*h';
e=x-W(:,:,i-1)'*y;
W(:,:,i)=W(:,:,i-1)+m*e';
end
你必须这样:1。你计算x并用它来计算其他函数。
2.所有这些都是矩阵。所以你需要先定义它。例如y = ones(3)
等.3。不是y ^ T或e ^ T.它的转置。如果你没有感觉到差异,那么你早点解决这个任务:)
最后一个:Tri函数会给你带来一些问题,但它定义在136页。
P.S。我错过beta
因为不知道它是什么:)