【问题标题】:Innovation representation using gram-schmidt construction MATLAB使用 gram-schmidt 构造 MATLAB 的创新表示
【发布时间】:2018-07-14 13:03:54
【问题描述】:

由三个随机变量组成的零均值随机向量 y 具有由 R 给出的 3x3 协方差矩阵。我需要使用 gram schmidt 构造确定 y 的创新表示,即 y= B*E,其中 E 是不相关分量的向量B是下三角矩阵。

我访问了许多页面,提供有关如何在 MATLAB 中执行此操作的教程,但仅当我的输入是具有独立列向量的矩阵时。在这里,我得到了协方差矩阵,但我似乎无法就如何利用这个矩阵并在 MATLAB 上实现它建立联系。

以下是我从由 Reza Ahmadzadeh 创建的 MathWorks 网站获得的代码:

function v = GramSchmidt(v)


k = size(v,2);


for ii = 1:1:k
    v(:,ii) = v(:,ii) / norm(v(:,ii));
    for jj = ii+1:1:k
        v(:,jj) = v(:,jj) - proj(v(:,ii),v(:,jj));
    end
end

    function w = proj(u,v)
        % This function projects vector v on vector u
        w = (dot(v,u) / dot(u,u)) * u;
    end

end

我没有这样的输入矩阵。还是只是我看不懂这段代码?

任何帮助将不胜感激。这是我第一次在 MATLAB 上做这样的项目,一点帮助真的会让我更好地理解这个概念。

【问题讨论】:

    标签: matlab


    【解决方案1】:

    我下载了你提到的函数here,然后我开始搞乱它。实际上,它需要的 v 参数只不过是应用了 Gram-Schmidt 算法的随机向量,即您的 y。证明:

    % Create sample data and check it's correlation...
    y = randi(10,10,3);
    y = y - repmat(mean(y),10,1);
    corr(y)
    
    % Compute the Gram-Schmidt using a well known formulation...
    [Q,R] = GramSchmidt_Standard(y);
    
    % Compute the Gram-Schmidt using the Reza formulation...
    UNK = GramSchmidt_Reza(y);
    
    % Q and UNK are identical...
    Q
    UNK
    
    function [Q,R] = GramSchmidt_Standard(y)
        [m,n] = size(y);
        Q = zeros(m,n);
        R = zeros(n,n);
    
        for j = 1:n
            v = y(:,j);
    
            for i = 1:j-1
                R(i,j) = Q(:,i).' * y(:,j);
                v = v - R(i,j) * Q(:,i);
            end
    
            R(j,j) = norm(v);
            Q(:,j) = v / R(j,j);
        end
    end
    
    function v = GramSchmidt_Reza(v)
        function w = proj(u,v)
            w = (dot(v,u) / dot(u,u)) * u;
        end
    
        k = size(v,2);
    
        for ii = 1:1:k
            v(:,ii) = v(:,ii) / norm(v(:,ii));
    
            for jj = ii+1:1:k
                v(:,jj) = v(:,jj) - proj(v(:,ii),v(:,jj));
            end
        end
    end
    

    因此您可以选择您喜欢的函数并继续您的计算。

    【讨论】:

    • 非常感谢@Tommaso 的帮助。真的很感激。
    猜你喜欢
    • 2011-03-15
    • 2016-08-06
    • 2012-08-28
    • 2014-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-10
    相关资源
    最近更新 更多