如何在matlab中相互依赖编写许多函数

时间:2015-09-23 21:36:38

标签: matlab

我有一些函数依赖于每个函数,函数来自本书第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

由于

1 个答案:

答案 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因为不知道它是什么:)