2

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

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

4

2 回答 2

6

这很简单

>> noZeros = withZeros(:, any( withZeros, 1 ) )

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

或者,您可以删除列

>> withZeros(:, all( withZeros == 0, 1 ) ) = [];

查看文档anyall了解更多信息。

于 2013-09-11T06:37:48.163 回答
6

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

A = rand(100);

假设第 15 列为零

A(:,15) = 0;

然后你可以删除这个列

A=A(:,any(A))
于 2013-09-11T06:41:02.070 回答