MATLAB Answers

How can I make each cell array consistent in length?

5 views (last 30 days)
I'm really grateful for anyone telling me how to make cell arrays equal in length (please find attached). The following code doesn'y work.
N = cellfun(@numel, T_mon);
>> M = min(N);
>> newN = M * ceil(N / M);
>> padfun = @(k) [T_mon{k} zeros(1, newN(k) - N(k))] ;
>> T_mon_new = arrayfun(padfun, 1:numel(T_mon) , 'un', 0) ;
Error using horzcat
Dimensions of matrices being concatenated are not consistent.
Error in @(k)[T_mon{k},zeros(1,newN(k)-N(k))]

  0 Comments

Sign in to comment.

Accepted Answer

Alex Mcaulley
Alex Mcaulley on 2 Mar 2020
Do you mean this?
N = cellfun(@numel, T_mon);
M = max(N);
T_mon_new = cellfun(@(a) [a; zeros(M - numel(a),1)],T_mon,'uni',0);

  3 Comments

Farshid Daryabor
Farshid Daryabor on 2 Mar 2020
can assign "0" to "NaN"? I want to be "NaN" instead zero.
Thanks
Alex Mcaulley
Alex Mcaulley on 2 Mar 2020
Yes, just changing:
N = cellfun(@numel, T_mon);
M = max(N);
T_mon_new = cellfun(@(a) [a; nan(M - numel(a),1)],T_mon,'uni',0);

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!