Distance between all elements of row vector

4 views (last 30 days)
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.

Accepted Answer

per isakson
per isakson on 17 Feb 2019
Edited: per isakson on 17 Feb 2019
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 Comments
Ana
Ana on 18 Feb 2019
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 on 18 Feb 2019
Edited: per isakson on 18 Feb 2019
Yes, arrayfun performs a loop. Roughly
len = 233;
cac = cell( 1, len );
for jj = 1 : len
cac{jj} = center(jj) - center;
end

Sign in to comment.

More Answers (1)

madhan ravi
madhan ravi on 18 Feb 2019
Straightforward:
row.'-row
  3 Comments
per isakson
per isakson on 18 Feb 2019
Edited: per isakson on 18 Feb 2019
%%
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

Sign in to comment.

Categories

Find more on Numeric Types in Help Center and File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!