如何跳过矩阵中的零?

时间:2013-09-11 06:30:19

标签: matlab matrix

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

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

2 个答案:

答案 0 :(得分:6)

这很简单

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

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

或者,您可以删除列

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

查看anyall的文档以获取更多信息。

答案 1 :(得分:6)

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

A = rand(100);

我们假设第15列为零

A(:,15) = 0;

然后您可以使用

删除此列
A=A(:,any(A))