element wise concatenation of square matrices

1 回表示 (過去 30 日間)
zozo
zozo 2013 年 2 月 12 日
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)

回答 (4 件)

Azzi Abdelmalek
Azzi Abdelmalek 2013 年 2 月 12 日
編集済み: Azzi Abdelmalek 2013 年 2 月 12 日
n=numel(A)
out=arrayfun(@(x) [A(x) B(x)],1:n,'un',0)
  5 件のコメント
zozo
zozo 2013 年 2 月 12 日
編集済み: zozo 2013 年 2 月 12 日
Yes..Like
17 18 24 27 1 35
23 2 65 5 7 8
4 4 6 16 13 11
Azzi Abdelmalek
Azzi Abdelmalek 2013 年 2 月 12 日
Ok, what about
out=arrayfun(@(x,y) num2str([x y]),A,B,'un',0)

サインインしてコメントする。


Thorsten
Thorsten 2013 年 2 月 12 日
編集済み: Thorsten 2013 年 2 月 12 日
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 2013 年 2 月 12 日
cellfun(@squeeze,num2cell(cat(3,A,B),3),'Uni',false)

zozo
zozo 2013 年 2 月 12 日
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 件のコメント
Azzi Abdelmalek
Azzi Abdelmalek 2013 年 2 月 12 日
out=arrayfun(@(x,y) num2str([x y]),A,B,'un',0)
zozo
zozo 2013 年 2 月 12 日
Thanks Azzi !!

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeCreating and Concatenating Matrices についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by