I want to plot some functions f(x,y) including singularities. For example; f(x,y)=tan(x-y)

  • In Matlab, when I run the following code

syms x y; func=@(x,y) tan(x-y); fsurf(@(x,y) func(x,y), [-4 2 -1 1]);

I get

enter image description here

  • In Mathematica, when I plot the same function, I can remove the discontinuities using Exclusions -> "Singularities"

enter image description here

My question: In MATLAB, how to remove vertical asymptote lines in Matlab's figure like Mathematica?

-How to find the asymptote lines in Matlab. After finding the asymptote, maybe we make it invisible in the plot.

  • 1
    $\begingroup$ Did you try clipping the z value in Matlab to e.g. (staying with your Mathematica example) [-5, 5] ? If you need it for a general case, you could try to clip the values to some multiplicity of the mean value(assuming the mean is not too corrupted). $\endgroup$
    – Dan Doe
    Jan 6 at 9:23
  • $\begingroup$ That will not help because MATLAB interpolates across the discontinuity. The singularities should be detected (as in Mathematica) and the numerical data could be plotted piecewise. $\endgroup$ Jan 6 at 10:50

1 Answer 1


MATLAB doesn’t plot where there are NaNs, so you can replace some of your data with NaNs to make a clean jump.

I don’t know which is a bigger lie, a clean jump or a strange wiggle. That’s up to your eye and values.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.