如何跳过矩阵中的零?

Maa*_*yan 2 matlab matrix

我有一个矩阵,列中填充零,我想将矩阵复制到一个新的矩阵,但跳过带有零的列.

有什么命令可以帮助我吗?我尝试用稀疏命令来做,但我真的不明白那里发生了什么.它会跳过零,但是当您想知道新矩阵中有多少列时,它仍会显示初始大小.

Sha*_*hai 6

这很简单

>> noZeros = withZeros(:, any( withZeros, 1 ) )
Run Code Online (Sandbox Code Playgroud)

该命令any( withZeros, 1 )返回一个长度为的逻辑向量,size(A,2)其中true每列withZeros具有至少一个非零条目.

或者,您可以删除列

>> withZeros(:, all( withZeros == 0, 1 ) ) = [];
Run Code Online (Sandbox Code Playgroud)

查看文档anyall更多信息.


小智 6

假设您有一个大小为100x100的随机矩阵

A = rand(100);
Run Code Online (Sandbox Code Playgroud)

让我们假设第15列为零

A(:,15) = 0;
Run Code Online (Sandbox Code Playgroud)

然后您可以删除此列

A=A(:,any(A))
Run Code Online (Sandbox Code Playgroud)

  • 这基本上是@Shai回答的=) (2认同)