Using the brute clearing header "clc; clear all;" inside the functions is a bad idea. On one hand a function does not contain local variables initially, such that clearing them does not have any benefit. On the other hand this removes all breakpoints also, and everything, which prevents debugging, is a really bad programming practize.
I prefer the standard indentation scheme applied by Matlab automatically. But this is a question of taste only.
The small number of comments reduces the educational value of this submission.
Transporting a set of variables as cell has the important drawback, that the order of the values matter:
If you use a struct with the fields "x", "y", and "a" instead, the meaning is immediatly clear.