【问题标题】:How to find all linear columns dependency in matrix如何在矩阵中找到所有线性列依赖
【发布时间】:2014-12-02 09:54:22
【问题描述】:

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

【问题讨论】:

  • 如果我们在输入中交换 col2 和 col4 会怎样,那么输出会是什么?
  • 对不起,我给出第4列的错误例子,让我们再检查一下
  • 不确定我在这里得到了“依赖”的定义。
  • 我认为我们可以看到只有 col4 与所有其他 col 是线性依赖关系。所以它将返回 1 否则,其他列线性在一起 (1,6) 和 (2,3,5)
  • 好的,所以只有唯一的列?注意这个操作会降低矩阵的秩

标签: matlab matrix


【解决方案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

【讨论】:

  • 如何制作只保持独立列的输出矩阵A
  • 行独立怎么样,先生?很不错
  • @user3051460 使用A(:,out==1)
  • @DennisJaheruddin 好吧,对于那个输入,所有列都依赖于我认为 OP 定义“依赖”的方式,所以它必须输出它所做的所有 -1s,所以它看起来很好对我来说。
  • @user3051460 对于这个新要求,必须对解决方案进行大量更改,我认为最好发布一个新问题,并在其中明确说明该要求。
猜你喜欢
  • 1970-01-01
  • 2015-01-14
  • 1970-01-01
  • 1970-01-01
  • 2015-05-03
  • 2011-09-14
  • 1970-01-01
  • 1970-01-01
  • 2015-05-09
相关资源
最近更新 更多