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

1 回表示 (過去 30 日間)
MANISH KUMAR
MANISH KUMAR 2020 年 5 月 6 日
回答済み: Voss 2023 年 12 月 14 日
I have this as input
H = [] [] [5] [] [3]
and I want
H = [0 0 5 0 3]
as output.
Please help!
  2 件のコメント
Michael Soskind
Michael Soskind 2020 年 5 月 6 日
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.
MANISH KUMAR
MANISH KUMAR 2020 年 5 月 6 日
Thank you very much sir!
So kind of you!

サインインしてコメントする。

回答 (1 件)

Voss
Voss 2023 年 12 月 14 日
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

カテゴリ

Help Center および File ExchangeMatrices and Arrays についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by