let us consider following graph of singular values

i want to make some kind of clustering of these data,namely to seperate main components from non main components,let say signal components from noise components,i would like to do like this(any software matlab,etc is great,better matlab)let us start like this ,first do linear regression with first point,then do regression analysis with first two point and so on,point is that one want to create two group,in first group coefficients of regression lines should be close to each other, also in another group regression coefficients should be close to each other,but regression coefficients in one group must be highly different then coefficients in another group,that means that we should find such point which separate this groups optimally, in other word i should stop regression analysis at some point which well separate two group,and another regression will start after this stop point till other rest points,please help me how to do it programaticaly
I think cumulative measures are often used for this sort of thing. For instance, for a given SNR,
$$ 10^{\mathrm{SNR}/10}={ S \over N}, $$
where $S$ is the signal power and $N$ is the noise power, we know that the ratio of the signal power to the total power is
$$ { S \over {S+N}} = { S \over {S \left( 1 + 1/10^{\mathrm{SNR}/10} \right) } } = { 10^{\mathrm{SNR}/10} \over 10^{\mathrm{SNR}/10} + 1 }. $$
Thus, you would accumulate the power in the largest singular values until their sum approached or exceeded the above ratio. The remaining singular vlaues will then correspond to the noise components.