Finding absolute difference between each row of a tall array
8 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
I am trying to find sum of absolute differences of each row. So if the input matrix A is M x N, the output matrix B should be M x M and
B( i , j ) = sum(abs( A ( i , : ) - A ( j , : ))). For small matrices the below two codes work.
lng=size(A,1);
B=reshape(sum(abs(repelem(A,lng,1)-repmat(A,lng,1)),2),lng,lng);
OR
lng=size(A,1); wdt=size(A,2);
B=zeros(lng);
for i=1:wdt
B=B+abs((A(:,i)-A(:,i)'));
end
The problem is that A is a tall matrix with dimension M larger than N. Thus, I cannot apply neither of these two methods on it. For the first code, it doesn't allow me to give the first inputs of repelem and repmat commands something different than 1. For the second code, taking the transpose fails for the tall array (is that forbidden totally for tall arrays or is there a workaround?) . Can someone please help me on this? I would appreciate if it would be a vectorized code.
Thanks in advance.
1 Kommentar
madhan ravi
am 24 Dez. 2018
Bearbeitet: madhan ravi
am 24 Dez. 2018
probably Edric Ellis can share some light , he is really an expert on this (tall arrays)..
Antworten (1)
Cris LaPierre
am 24 Dez. 2018
I would use the diff function.
I would probably use abs(diff()).
There is a note on the limitations for diff with tall arrays:
- You must use the three-input syntax Y = diff(X,N,dim).
Siehe auch
Kategorien
Mehr zu Matrix Indexing finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!