Distance between all elements of row vector

6 ビュー (過去 30 日間)
Ana
Ana 2019 年 2 月 17 日
編集済み: per isakson 2019 年 2 月 18 日
So, I have 1x200 matrix, (row vector). I want to find difference (x(0)-x(1), x(0)-x(2)...) between all elements of an array. How do I do that ?
I should be having 200x200/2 values.

採用された回答

per isakson
per isakson 2019 年 2 月 17 日
編集済み: per isakson 2019 年 2 月 17 日
Hint:
%%
row = rand(1,6);
cell2mat( reshape( arrayfun( @(jj) row(jj)-row, (1:6), 'uni', false ), [],1 ) )
outputs
ans =
0 -0.0790 -0.0644 0.2865 0.0233 0.5075
0.0790 0 0.0146 0.3655 0.1023 0.5866
0.0644 -0.0146 0 0.3509 0.0877 0.5719
-0.2865 -0.3655 -0.3509 0 -0.2633 0.2210
-0.0233 -0.1023 -0.0877 0.2633 0 0.4843
-0.5075 -0.5866 -0.5719 -0.2210 -0.4843 0
  4 件のコメント
Ana
Ana 2019 年 2 月 18 日
Can you explain me exactly what does input into arrayfun mean?
( @(jj) center(jj)-center, (1:233), 'uni', false ), some kind of for loop ?
per isakson
per isakson 2019 年 2 月 18 日
編集済み: per isakson 2019 年 2 月 18 日
Yes, arrayfun performs a loop. Roughly
len = 233;
cac = cell( 1, len );
for jj = 1 : len
cac{jj} = center(jj) - center;
end

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

その他の回答 (1 件)

madhan ravi
madhan ravi 2019 年 2 月 18 日
Straightforward:
row.'-row
  3 件のコメント
madhan ravi
madhan ravi 2019 年 2 月 18 日
Did you run the code?
per isakson
per isakson 2019 年 2 月 18 日
編集済み: per isakson 2019 年 2 月 18 日
%%
row = rand(1,6);
c1 = cell2mat( reshape( arrayfun( @(jj) row(jj)-row, (1:6), 'uni', false ), [],1 ) );
%%
c2 = reshape(row,[],1) - row; % The name, reshape, communicates the intent
>> c2-c1
ans =
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0

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

カテゴリ

Help Center および File ExchangeLogical についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by