使用cell2mat函数时提示串联矩阵维度不一致解决方法

我们想把元胞数组转换为普通数组时经常遇到这个问题,为了解决这个问题,我们可以采用填充的方式首先将元胞数组填充完整,再进行转换。

A=sparse([0 1 0 0 1;2 1 0 3 0;1 2 0 0 2;0 3 1 0 0]); %data
[ii,~,vv]=find(A);
uniq=accumarray(ii(:),vv(:),[],@(x){unique(x.')});
padded=cellfun(@(M)[M(1,1:end),...
                    zeros(1,4-size(M,2))],...
                    uniq,...
                    'UniformOutput',false);
uniq=cell2mat(padded);

以上为一个示例,我首先求出矩阵每行的不重复的元素,得到一个元胞数组,元胞数组每行长度不一致,使用cellfun函数将元胞数组空白地方填充为0,再进行转换。

你可能感兴趣的:(matlab,matlab)