I don't have a version of MATLAB installed that has the angvel( ) and rotvec( ) functions, so I can only make an educated guess. Can you open up the code for angvel.m or rotvec.m and see what is actually going on? It could be a variation of the following:
For the 'frame' convention, the quaternion is a right-chain Hamilton quaternion. So the derivative of an arbitrary quaternion q in this convention would be:
qdot = (1/2) * q * w
Solving for the angular velocity w gives
w = 2 * q^-1 * qdot
Then suppose you had two different quaternions q1 and q2 and wanted to know the angular velocity that would result in q1 being rotated into q2 in some delta time dt.
A crude numerical approximation to qdot could be:
qdot = deltaq / dt = (q2 - q1) / dt
So you would get the following approximate expression for the angular velocity w:
w = 2 * q1^-1 * (q2 - q1) / dt
Now just plug in your initial quaternion q for q1 and your final quaternion q0 for q2 and you get for your particular case:
w = 2 * q^-1 * (q0 - q) / dt
Then pick off the vector part of the result for the angular velocity vector. E.g.,
>> q = quaternion(1,0,0,0);
>> q0 = quaternion(eul2quat(([0 1 0]),'XYZ'));
>> Q = double(q)';
>> Q0 = double(q0)';
>> dt = 1;
-0.2448 0 0.9589 0
0 0.9589 0
Again, this is all just an educated guess.
Bottom line is this is just a 1st order crude numerical approximation, not an angular rate vector derived from pure rotation principles. For a "large" rotation angle this would give poor results.
For more information on quaternion conventions, see the following links: