Getting cetral weighted value in an Array
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
Hi there,
Suppose I have an Array
a = [0 0 1 1 1 2 3 5 6 7 7 99 100]
It's median value is 3 for sure, but center weighted value is 5 as if we assign weights to the array, then the weight matrix become
weight_a = [1 1 2 2 2 3 4 5 6 7 7 8 9]
whose center weight is 5. Is there any efficient way in Matlab to find the center weight? one way is to use unique function which discards duplicate values and give you an array with unique element, from that unique array, median value is the center weighted. But unique function is time consuming if you apply tic toc to it.
So is there any other way to find center weighted element.
0 Kommentare
Antworten (1)
Andrei Bobrov
am 13 Aug. 2013
Bearbeitet: Andrei Bobrov
am 14 Aug. 2013
a1 = sort(a(:));
out = median(a1([true;diff(a1)~=0]));
ADD
a1 = sort(a(:));
ii = find([true;diff(a1)~=0]);
i2 = ceil(numel(ii)/2);
out = a1(ii(i2));
or
i1 = unique(a);
out = i1(ceil(numel(i1)/2));
3 Kommentare
Siehe auch
Kategorien
Mehr zu Logical 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!