Why error using cell2mat ?

Hi all, I have a 309 * 5956 cell array of same type and same length. however most of the elements are empty.
However using cell2array to convert this matrix to numerical it gives me error as:
cell2mat(all_i_dis)
Error using cat
Dimensions of matrices being concatenated are not consistent.
Error in cell2mat (line 79)
m = cat(1,m{:});
any idea is highly appreciated.

 Réponse acceptée

Azzi Abdelmalek
Azzi Abdelmalek le 19 Juil 2013

1 vote

A={ 1 , 2 ; [], 4};
cell2mat(A);
The result
Error using cat
Dimensions of matrices being concatenated are not consistent.
Error in cell2mat (line 87)
m = cat(2,m{:});
To use cell2mat, all cells must be the same size and same class

3 commentaires

saharsahar
saharsahar le 19 Juil 2013
Thanks Azzi, so if I am right I have to convert all of the [] to 0 maybe? Is there anyway to do that?
Thanks
saharsahar
saharsahar le 19 Juil 2013
I know the way through a loop like
for n=1:length(mycellarray)
if isempty(mycellarray{n})
mycellarray{n}=0;
end
end
but is there any other efficient way instead of loop?
Azzi Abdelmalek
Azzi Abdelmalek le 19 Juil 2013
Modifié(e) : Azzi Abdelmalek le 19 Juil 2013
A(cellfun('isempty',A))={0}
%or
A(cellfun('isempty',A))={nan}

Connectez-vous pour commenter.

Plus de réponses (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by