This looks to me as if ODE45 is initially taking big steps which only coarsely capture the behavior, but it quickly recovers and takes appropriately sized steps.
Some things to try to fix this:
- The initial step taken by the solver appears too large. Set the 'InitialStep' option of ODESET to restrict this initial step size.
- Alternatively you can set the 'MaxStep' option so that the solver does not step over this behavior. Your solution appears periodic so a good value would be the length of a period (or perhaps half a period).