element wise concatenation of square matrices

5 Ansichten (letzte 30 Tage)
zozo
zozo am 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)

Antworten (4)

Azzi Abdelmalek
Azzi Abdelmalek am 12 Feb. 2013
Bearbeitet: Azzi Abdelmalek am 12 Feb. 2013
n=numel(A)
out=arrayfun(@(x) [A(x) B(x)],1:n,'un',0)
  5 Kommentare
zozo
zozo am 12 Feb. 2013
Bearbeitet: zozo am 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 am 12 Feb. 2013
Ok, what about
out=arrayfun(@(x,y) num2str([x y]),A,B,'un',0)

Melden Sie sich an, um zu kommentieren.


Thorsten
Thorsten am 12 Feb. 2013
Bearbeitet: Thorsten am 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 am 12 Feb. 2013
cellfun(@squeeze,num2cell(cat(3,A,B),3),'Uni',false)

zozo
zozo am 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. :-)
  2 Kommentare
Azzi Abdelmalek
Azzi Abdelmalek am 12 Feb. 2013
out=arrayfun(@(x,y) num2str([x y]),A,B,'un',0)
zozo
zozo am 12 Feb. 2013
Thanks Azzi !!

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Creating and Concatenating Matrices finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by