function[vysledek]=pseudoskelet(A,M,N)
%na vstupu: A - daná matice
%           M,N - symetrické pozitivně definitní matice
%na výstupu: vysledek - hledaná matice
[m,n]=size(A);
[m1,m2]=size(M);
if norm(M-M')~=0 | m1~=m2 | m1~=m | sum(eig(M)>0)~=m
   error(['M musi byt symetricka pozitivne ', ...
        'definitni matice typu m x m'])
end;
[n1,n2]=size(N);
if norm(N-N')~=0 | n1~=n2 | n1~=n | sum(eig(N)>0)~=n
   error(['N musi byt symetricka pozitivne ', ...
        'definitni matice typu n x n'])
end;
B=A(:,1);
h1=rank(B);
j=2;
for i=2:n
    B(:,j)=A(:,i);
    h2=rank(B);
    if h2==h1+1
        j=j+1;
        h1=h2;
    else
        B(:,j)=[];
    end;
end;
C=B;
D=B\A;
BM=inv(C'*M*C)*C'*M;
CN=inv(N)*D'*inv(D*inv(N)*D');
AMN=CN*BM;
vysledek=AMN;