scale in matrix

Apart from non-normalised matrices with no rotation in them, can we get the scale values from a matrix ?

Sure, just treat the columns as vectors and compute their lengths.

If you have a generic matrix like this one

r0 r3 r6 t0
r1 r4 r7 t1
r2 r5 r8 t2
0  0  0  1

then
XScale = sqrt(r0r0+r3r3+r6r6);
YScale = sqrt(r1
r1+r4r4+r7r7);
ZScale = sqrt(r2r2+r5r5+r8*r8);