overwrite cell array in a loop

24 views (last 30 days)
summyia qamar
summyia qamar on 31 Jul 2018
Commented: summyia qamar on 31 Jul 2018
the code is given below; parts(day) are calculated using some data which is let say comes out as 3 4 2 for day 1 2 3. complete code is attached in file.. when the value of parts(day) decreses from previous loop, the cell cannot reassign the new value but overwrite on previous and causes extra cell which creates error in reshaping.
for day=1:3
n = 2;
Psub{parts(day}=[];
for ii=1:(parts(day)*2)/n
Psub{ii}=process_plan((ii-1)*n+1:ii*n,:);
end
P=reshape((cell2mat(Psub)),parts(day)*2,machines);
  2 Comments
summyia qamar
summyia qamar on 31 Jul 2018
I have provided the complete code..the error is from line 52 to 57

Sign in to comment.

Accepted Answer

Stephen23
Stephen23 on 31 Jul 2018
Edited: Stephen23 on 31 Jul 2018
clear the cell array before you implicitly create it with that allocation:
clear P
P{4}=[];
...
clear P
P{2}=[]
...
Note that this is not an efficient solution. A much better solution would be to explicitly create the cell array of the right size each time, e.g.:
P = cell(1,4);
...
P = cell(1,2);
...
I recommend that you explicitly create the cell array.
  1 Comment
summyia qamar
summyia qamar on 31 Jul 2018
thankyou so much, I was looking for this solution but I was confused how to define cell array. the second solution is best for me.

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!