Distance between all elements of row vector

9 Ansichten (letzte 30 Tage)
Ana
Ana am 17 Feb. 2019
Bearbeitet: per isakson am 18 Feb. 2019
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.

Akzeptierte Antwort

per isakson
per isakson am 17 Feb. 2019
Bearbeitet: per isakson am 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 Kommentare
Ana
Ana am 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 am 18 Feb. 2019
Bearbeitet: per isakson am 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

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

madhan ravi
madhan ravi am 18 Feb. 2019
Straightforward:
row.'-row
  3 Kommentare
madhan ravi
madhan ravi am 18 Feb. 2019
Did you run the code?
per isakson
per isakson am 18 Feb. 2019
Bearbeitet: per isakson am 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

Melden Sie sich an, um zu kommentieren.

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by