element wise concatenation of square matrices

1 view (last 30 days)
zozo
zozo on 12 Feb 2013
Hi, I have the following two square matrices:
A=
17 24 1
23 65 7
4 6 13
B=
18 27 35
2 5 8
4 16 11
I want to concatenate the elements of matrices A and B to form a cell C such that:
C= <17,18> <24,27> <1,35>
<23,2> <65,5> <7,8>
<4,4> <6,16> <13,11>
Please help. (I want to avoid using for loop)

Answers (4)

Azzi Abdelmalek
Azzi Abdelmalek on 12 Feb 2013
Edited: Azzi Abdelmalek on 12 Feb 2013
n=numel(A)
out=arrayfun(@(x) [A(x) B(x)],1:n,'un',0)
  5 Comments
zozo
zozo on 12 Feb 2013
Edited: zozo on 12 Feb 2013
Yes..Like
17 18 24 27 1 35
23 2 65 5 7 8
4 4 6 16 13 11
Azzi Abdelmalek
Azzi Abdelmalek on 12 Feb 2013
Ok, what about
out=arrayfun(@(x,y) num2str([x y]),A,B,'un',0)

Sign in to comment.


Thorsten
Thorsten on 12 Feb 2013
Edited: Thorsten on 12 Feb 2013
Like this?
C = arrayfun(@(x) ['<' num2str(A(x)) ',' num2str(B(x)) '>'], 1:numel(A), 'un', 0);
C = reshape(C, [3 3]);

Sean de Wolski
Sean de Wolski on 12 Feb 2013
cellfun(@squeeze,num2cell(cat(3,A,B),3),'Uni',false)

zozo
zozo on 12 Feb 2013
This is what I wanted.
A=magic(3);
B=magic(3);
C = arrayfun(@(x) [num2str(A(x)) ' ' num2str(B(x))],1:numel(A), 'un', 0);
Z=reshape(C,3,3)
Thanks for your help! Azzi, Thorsten, Sean. :-)

Categories

Find more on Creating and Concatenating Matrices in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!