Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 如何在矩阵中找到所有线性列依赖关系_Matlab_Matrix - Fatal编程技术网

Matlab 如何在矩阵中找到所有线性列依赖关系

Matlab 如何在矩阵中找到所有线性列依赖关系,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。因此,我

我想找到矩阵中所有线性列的索引。输出是一个向量,其中独立列为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=

如何用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