Hi,
I have the 72 x 1 cell named output 1 (attached here).
As shown in the attachment, some cells got empty matrix, I intend to add zero values in the manner of 8x1 into all the all empty cells ..
Any idea how to assign this .. ??

 채택된 답변

Rik
Rik 2021년 7월 16일
편집: Rik 2021년 7월 16일

0 개 추천

You mean like this?
output1={[1 2;3 4],[]};
L=cellfun(@isempty,output1);
output1(L)={zeros(8,1)};
output1
output1 = 1×2 cell array
{2×2 double} {8×1 double}
Note that cellfun has a legacy mode, which is often much faster, but is limited in terms of what data types will work.

댓글 수: 5

Turbulence Analysis
Turbulence Analysis 2021년 7월 16일
Exactly !!!!!!!.. Perfect thanks a lot .. !!
Turbulence Analysis
Turbulence Analysis 2021년 7월 16일
Just one follow up question, now each cell got 8,1 entires, I am looking to store each 8 x 1 entries as single column in the seperate matrix. I just tried cell2mat (output1), However it stores all the entries of cell in the single column..
Rik
Rik 2021년 7월 16일
You can either use reshape to make sure your cell array is a row vector, or use horzcat and a comma separated list:
mat=horzcat(output1{:});
Amir Pasha Zamani
Amir Pasha Zamani 2022년 4월 25일
It only works for a single element of the cell.
I need to pre-assign values (let's say zeros(10,10)) to all cell elemenst.
@Amir Pasha Zamani L can be a logical array with as many elements as output1 (or fewer). So can you explain what you mean?
To pre-allocate the array you describe I suggest using repmat or repelem:
YouWant=repmat({zeros(10,10)},2,3)
YouWant = 2×3 cell array
{10×10 double} {10×10 double} {10×10 double} {10×10 double} {10×10 double} {10×10 double}

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

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Creating and Concatenating Matrices에 대해 자세히 알아보기

질문:

2021년 7월 16일

댓글:

Rik
2022년 4월 25일

Community Treasure Hunt

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

Start Hunting!

Translated by