Linford, how about refreshing only the data in the loop using the set command:
h = surf(X,Y,Z)
...
set(h,'ZData',new_ZData)
new_ZData would be your Z, of course.
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!