如何在矩阵中查找所有线性列依赖性

时间:2014-12-02 09:54:23

标签: matlab matrix

我想在矩阵中找到所有线性列的索引。输出是一个向量,其中为独立列提供1,为所有线性依赖列提供-1。例如,我有一个矩阵A

A =

     1     0     0     0     0     1   1
     1     0     0     1     0     1   1
     1     1     1     0     1     1   1
     1     1     1     0     1     1   0

我们可以看到列依赖性是1,2,3,5,6。因此我的预期结果是

output=[-1 -1 -1 1 -1 -1 1];

独立矩阵仍然是

A =

           0     1
           1     1
           0     1
           0     0

如何通过matlab实现它? 线性行怎么样?

1 个答案:

答案 0 :(得分:1)

我认为你正在寻找这样的东西 -

out = ones(1,size(A,2))
out(sum(all(bsxfun(@eq,A,permute(A,[1 3 2])),1),2)>=2)=-1

因此,基本上对于每一列,它会查找是否存在任何其他匹配列,如果存在,则将其标识为“依赖”(从我可以收集的内容作为此问题的定义)列。

输出 -

out =
    -1    -1    -1     1    -1    -1     1

要在行间查找“依赖关系”,请使用此 -

out = ones(1,size(A,1))
out(sum(all(bsxfun(@eq,A,permute(A,[3 2 1])),2),1)>=2)=-1