Appending one cell array to non-zero cells of another

I have a cell array FINAL_OUTPUT < 50x1 cell > and another one called indexing as shown in the attached file. How can I append the indexing column inside the non-empty cells of FINAL_OUTPUT? In the end, I would like to have FINAL_OUTPUT{1,1} having size 3x3 FINAL_OUTPUT{2,1} having size < 1x3 > etc...and the empty cells of FINAL_OUTPUT should remain empty.

3 Comments

You imply that each row of the index-element gets allocated to one row of the desired output cell array element... but what happens when the number of rows of the elements of FINAL _OUTPUT and index do not match, such as on lines 7, 11, 12, 14, 17, 22, 32, and 34?
Or do all rows receive a copy of the whole vector from index?
Please upload some sample data for us to use, it is hard to write code with nothing to test it on. You can use the paperclip button, and then press both Choose file and Attach file.
Here is a sample set. Thank you for your assistance. The idea is that the rows of indexing should be appended to the non-zero rows of FINAL_OUTPUT
these are the indices of FINAL_OUTPUT to which each row of indexing corresponds.

Sign in to comment.

 Accepted Answer

>> out = cellfun(@(F,I)[F,num2cell(I)], FINAL_OUTPUT(check_not_empty), indexing, 'UniformOutput',false);
>> out{1}
ans =
'A' [ 110] [1]
'B' [ 110] [2]
'C' [2.8422e-14] [3]
>> out{2}
ans =
'A' [56.5000] [1]
>> out{3}
ans =
'A' [55] [1]
'B' [55] [2]
'C' [55] [3]
And of course to allocate back into the original cell array, just use indexing:
FINAL_OUTPUT(check_not_empty) = out;

More Answers (1)

out=cellfun(@(x,y) [x y],FINAL_OUTPU,indexing,'un',0)

1 Comment

Thank you for your answer, but this does not work since the arguments FINAL_OUTPUT and indexing are not of the same size.

Sign in to comment.

Asked:

on 2 Jul 2015

Commented:

on 2 Jul 2015

Community Treasure Hunt

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

Start Hunting!