Try using the profiler, as per isakson recommends. This will give you an idea of what is taking up your time. MATLAB will use a paging system if it runs out of RAM on most systems, which is very slow but prevents crashing; I see that you use like 85% of my system memory here, which is about 8 GB so it would depend on your system.
I tried this with the code you sent, and it indicated that line 118 was the problem. It doesn't seem to need to be there, since your code should generate one anyways, so I just commented it out and the performance improved dramatically; for reference, after that change, this runs in about 31s on my system.
The plotting still seems to be the slowest part of your code. Perhaps it would be better to just save the data to be plotted, then perform the plotting at the end. I'm clear why it's quite so slow, but you do have a lot of points to plot.