>>Although , the code works if i save the function separately?
Yes, if the function is saved as another m file, the file will be sent to a cluster automatically. If not, you can send the file to the cluster by the following codes.
p = parpool;
After this, I think you can run your script without an error.