我有一些依赖于每个函数的函数,这些函数来自本书第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
谢谢
好的。我无法真正理解您想要的内容,但是您的代码显示您不了解某些时间。我会尽力向您澄清一下:
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页。
PS我错过了beta
,因为不知道这是什么:)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句