在Matlab中,我想删除矩阵中的所有零而不改变矩阵的配置

时间:2016-06-27 07:35:13

标签: matlab matrix

我想删除矩阵中的所有零。这些零出现在每行的末尾。见例:

5.7327    7.1388    7.9082
6.5109    7.1689    8.1205
7.0741    6.9802    8.0936
7.4028         0    7.8214
7.4871         0         0
     0         0         0
     0         0         0

如果我使用out = out(out~ = 0),它给出了一个向量而不是我的矩阵......

对于输出我想得到:

5.7327    7.1388    7.9082
6.5109    7.1689    8.1205
7.0741    6.9802    8.0936
7.4028              7.8214
7.4871                  

谢谢你的帮助

1 个答案:

答案 0 :(得分:2)

在Matlab中,矩阵不能具有不同行长度的不同列。您可以执行许多操作,具体取决于删除零的目的: 1.用NaN值替换零:

out(out==0)=nan;

2。将矩阵转换为单元格数组并从每个单元格中删除零:

outCell = mat2cell(out,ones(size(out,2),1),size(out,1))
outCell = cellfun(@(o) o=o(o~=0),outCell,'uniformoutput',false);

请详细说明您要删除零的原因