# create cell array by extracting all the same row from multiple matrix

3 views (last 30 days)
Katherine Zheng on 28 Sep 2022
Commented: Stephen23 on 1 Oct 2022
I have three double A = [105x3]; B = [105x3]; C = [105x3]; I want to create a cell array D = {105 cells} each cells contains the corresponding rows from A B C.
For example,
D {1} = [
A(1,:);
B(1,:);
C(1,:);]
each row from A B C are in different rows in D
Is this achievable through cellfun?

Stephen23 on 28 Sep 2022
"Is this achievable through cellfun?"
Yes:
A = rand(105,3);
B = rand(105,3);
C = rand(105,3);
D = cellfun(@vertcat,num2cell(A,2),num2cell(B,2),num2cell(C,2), 'uni',0)
D = 105×1 cell array
{3×3 double} {3×3 double} {3×3 double} {3×3 double} {3×3 double} {3×3 double} {3×3 double} {3×3 double} {3×3 double} {3×3 double} {3×3 double} {3×3 double} {3×3 double} {3×3 double} {3×3 double} {3×3 double}
But most likely you should be using ND arrays rather than concatenating & splitting data like that.
##### 2 CommentsShowHide 1 older comment
Stephen23 on 1 Oct 2022
"But I am not sure I understand the 'using ND arrays' in your suggestion."

### More Answers (1)

KSSV on 28 Sep 2022
Edited: KSSV on 28 Sep 2022
D = cell(105,5) ;
for i = 1:105
D{i} = [A(i,:) B(i,:) C(i,:)] ;
end
Or
D = [A B C] ;
D = num2cell(D,2) ;
##### 2 CommentsShowHide 1 older comment
KSSV on 28 Sep 2022
cellfun uses loop inside.....

### Categories

Find more on Matrices and Arrays in Help Center and File Exchange

R2021a

### Community Treasure Hunt

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

Start Hunting!