Function which creates a vertical line (Heaviside or something) which has a double gap in it

2 visualizaciones (últimos 30 días)
I want to create a function which produces something like this where we have a vertical line which has a gap in it.
I have a feeling it'll involve heaviside functions but I'm not sure
  5 comentarios
John D'Errico
John D'Errico el 4 de En. de 2023
No. Sorry, but this is not a function at all, in the sense that it is a single valued function that will return a single result. In fact, it would not use a heaviside function either. Simplest would be to just use direct calls to a tool like line or plot to draw the lines you want. That is, do exactly as shown by @Dyuman Joshi, in what should have been an answer.
You could call it an implicit function, but doing so is a hack that I'm not even terribly proud to have written:
fun = @(x,y) ((x - 0.5).*((y > 1) | (y < -1))) .* ((x + 0.5).*((y > 1) | (y < -1)));
Follow the advice of @Dyuman Joshi.
John D'Errico
John D'Errico el 4 de En. de 2023
@HC98 Sorry, but what you want is not a (usable) function, at least not a single valued function. For some value of x, what is y?

Iniciar sesión para comentar.

Respuestas (1)

Johannes Hougaard
Johannes Hougaard el 4 de En. de 2023
I think this function will do what you like.
For your example you should put in approximately
x = 0.1;
gaps = [-1.1 -1;1 1.1];
width = 0.1;
But as I don't have your code for the remainder of the graph I've tested using the contourf(peaks) test code
fig_handle = figure;
axes_handle = axes;
x = 18;
gaps = [15.1 16.5;19.2 20.6];
linewidth = 0.2;


Más información sobre 2-D and 3-D Plots en Help Center y File Exchange.





Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by