Set the world_matrix of a bone
The link batFINGER provider is the correct answer, just in case someone is wondering: The reason why my bone was expecting a matrix 3x3 is that I used

bone = C.active_bone


the correct way to get the bone is 

bone = my_armature.pose.bones['my_bone']