Compile multiple cells in a single vector including empty cells as zero elements.

1 view (last 30 days)
I have this as input
H = [] [] [5] [] [3]
and I want
H = [0 0 5 0 3]
as output.
Please help!
  2 Comments
Michael Soskind
Michael Soskind on 6 May 2020
I will provide a very naive method here. Maybe someone has a better solution.
H = {[],[],5,[],3}; % original array
for i = 1:size(H,1) % loop through rows (1)
for j = 1:size(H,2) % loop through columns (5)
if isempty(H{i,j})
H{i,j} = [0]; % if empty, replace the empty array with zero
end
end
end
H_new = cell2mat(H) % convert cell to matrix
You could use a temporary cell array if you do not want to modify the original cell array H.

Sign in to comment.

Answers (1)

Voss
Voss on 14 Dec 2023
H = { [] [] [5] [] [3] } % original array
H = 1×5 cell array
{0×0 double} {0×0 double} {[5]} {0×0 double} {[3]}
H(cellfun(@isempty,H)) = {0} % if empty, replace the empty array with zero
H = 1×5 cell array
{[0]} {[0]} {[5]} {[0]} {[3]}
H = [H{:}] % convert cell to matrix
H = 1×5
0 0 5 0 3

Categories

Find more on Multidimensional Arrays in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!