MATLAB: Compare all elements of a vector against each other

compare valuesdeviation of 10%

I have a vector that includes some values
v=[2.4 3.5 7.4 3.6 4.5]
each value is the mean value of a row in a matrix called y
now I want to compare each value with the other values in the vector and if they are similar (with a deviation of 10%) then delete the row in y of the larger value.
I managed to compare just the neighborhood values
for i=1:length(v)-1
if v(i)==v(i+1)
y(i,:)=[];
end
end
I am struggling to find the right way to compare the values against each other and to include this 10%
Any help is much appreciated !

Best Answer

relativeDiffs = abs( ( v - v' ) ) ./ v; % R2016b syntax only
indicatorMatrix = relativeDiffs <= 0.1;
will give you an indicator matrix of values to delete. Obviously you would ignore the leading diagonal as this is each value against itself. The values are normalised against the original v by row so the upper right triangle and lower left triangle will differ by the fact that e.g.
(3.5 - 2.4) / 2.4 ~= (3.5 - 2.4) / 3.5
You will get both of these answers from the relativeDiffs matrix. In some cases only one of these will highlight in the final indicator matrix as being < 10%.
relativeDiffs = abs( bsxfun( @minus, v, v' ) ) ./ v
should work for pre R2016b syntax.