I got the same problem but i found a different solution.
After long investigation i discovered that the problem is in the starter or, in other words how the starter works together with the engine ecu.
During cold cranking the engine ecu accepts a range of rpm much wider in order to start to inject fuel and revving the engine than in hot phase.
As a result, in case the car is not so new, the starter can't reach the range of rpm that the engine ecu consider acceptable to start to inject fuel.
To short the story you have 2 options:
- to change the battery to am ore powerful one (this is what I've done, removing the battery box in the engine compartment in order to fit a bigger one ).
- to change the starter with new one (which costs you a lot more than a battery).
Anyway, this was my personal experience, I don't know in advance if this can solve your problem but for sure a rpm range analysis inside the engine ecu is perfomed.