Pad with Nan according to maximum row in cell

조회 수: 19 (최근 30일)
Cside
Cside 2019년 10월 27일
댓글: Tobias 2023년 3월 14일
Hi, I have a 1 x 8 cell (attached) and would like to cell2mat this matrix i.e to expand and show into one big numeric 97 x 8 array (97 being the maximum length of a cell array). I would also like to pad the ends of the smaller cell arrays with Nan to make all columns the same row length. How may I write for this?
Thank you!
  댓글 수: 1
Stephen23
Stephen23 2023년 3월 3일
편집: Stephen23 2023년 3월 3일
"How may I write for this?"
Rather than reinventing the wheel, you can simply download Jos' excellent PADCAT here:
and use it like this, where C is your cell array:
M = padcat(C{:})
This works automatically for vectors in either orientation.

댓글을 달려면 로그인하십시오.

채택된 답변

Fabio Freschi
Fabio Freschi 2019년 10월 27일
I keep all steps separated
% the data
A = {rand(47,1),rand(80,1),rand(97,1)};
% pad with NaNs
A = cellfun(@(x)[x(1:end); NaN(97-length(x),1)],A,'UniformOutput',false);
% make a matrix
A = cell2mat(A);
  댓글 수: 3
Fabio Freschi
Fabio Freschi 2023년 3월 2일
Joanne,
if I understand correctly your question, you must simply change everything that is row into column and vice versa
% the data
A = {rand(1,47);rand(1,80);rand(1,97)}; % <- note the semicolon, note the row/col excange in the data
% pad with NaNs
A = cellfun(@(x)[x(1:end) NaN(1,97-length(x))],A,'UniformOutput',false); % <- note the missing semicolon after x(1:end) and the row/col excange in NaN
% make a matrix
A = cell2mat(A);
Hope iot helps
Tobias
Tobias 2023년 3월 14일
Hi! Thank you for your answer, unfortunately i appears that for cells < max_t the function just adds another cell arrayto the end of it, with max_t size. Do you know how to circumvent this ?

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Data Type Conversion에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by