Matlab 如何在矩阵中找到所有线性列依赖关系
我想找到矩阵中所有线性列的索引。输出是一个向量,其中独立列为1,所有线性依赖列为-1。例如,我有一个矩阵aMatlab 如何在矩阵中找到所有线性列依赖关系,matlab,matrix,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。因此,我
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=
如何用matlab实现?
线性行怎么样?我想您正在寻找类似的东西-
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
如果我们在输入中交换col2和col4,那么输出会是什么呢?对不起,我给出了第4列的错误示例。让我们再次检查一下,我不确定这里是否有“依赖项”的定义。我想我们可以看到,只有col4是与所有其他列的线性依赖项。因此,它将返回1,否则,其他列将一起线性(1,6)和(2,3,5),好的,那么只有唯一的列?请注意,此操作将降低矩阵的秩如何使仅保持独立列的输出矩阵A与行独立如何,先生?非常nice@user3051460使用
A(:,out==1)
@DennisJaheruddin对于该输入,所有列都是依赖的,根据我认为OP定义“依赖性”的方式,所以它必须输出它所做的所有-1s
,所以对我来说它看起来很好。@user3051460对于这个新需求,解决方案必须改变很多,我认为最好是在新的问题中明确说明这一要求。
out = ones(1,size(A,1))
out(sum(all(bsxfun(@eq,A,permute(A,[3 2 1])),2),1)>=2)=-1