Your code does not have a valid Matlab syntax. There are no comments. The reader has to guess what "MLP" and "XOR" means in this case. It is not clear why you claim that the results are wrong, because you do not mention the values you expect. So perhaps simply your expectations are wrong.
Based on the source code only, it is impossible to guess if it contains bugs. Considering that the initial data are random (|randn()| !), the final values are most likely influenced randomly also.
