我想在矩阵中找到所有线性列的索引。输出是一个向量,其中为独立列提供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实现它? 线性行怎么样?
答案 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