I'm not sure what this is called, but I want to calculate the cross-differences?? of values in a matrix such that:
f(
1 5 8
3 6 7
4 5 2
6 8 1
)
produces:
[
0 4 7
-4 0 3
-7 -3 0
]
[
0 3 4
-3 0 1
-4 -1 0
]
[
0 1 -2
-1 0 3
2 -3 0
]
[
0 2 -5
-2 0 -7
5 7 0
]
does anyone know what this is called, and how I can do it?

 採用された回答

Sean de Wolski
Sean de Wolski 2012 年 4 月 24 日

0 投票

x = [1 5 8
3 6 7
4 5 2
6 8 1]';
sz = size(x);
C = bsxfun(@minus,reshape(x,1,sz(1),sz(2)),reshape(x,sz(1),1,sz(2)))

2 件のコメント

Walter
Walter 2012 年 4 月 24 日
awesome.. do you know what this is called?
Sean de Wolski
Sean de Wolski 2012 年 4 月 24 日
Nope. But I do know that it is very bsxfun-friendly and that makes it cool.

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

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File Exchange で MATLAB についてさらに検索

製品

Community Treasure Hunt

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

Start Hunting!

Translated by