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

3 views (last 30 days)
HC98 on 4 Jan 2023
I want to create a function which produces something like this where we have a vertical line which has a gap in it.
https://i.stack.imgur.com/uKcqG.png
I have a feeling it'll involve heaviside functions but I'm not sure
John D'Errico on 4 Jan 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)));
fimplicit(fun,[-12,12,-12,12])
John D'Errico on 4 Jan 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?

Johannes Hougaard on 4 Jan 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;
contourf(peaks);
x = 18;
gaps = [15.1 16.5;19.2 20.6];
linewidth = 0.2;
vertical_gapped_line(axes_handle,x,gaps,linewidth);

### Categories

Find more on Get Started with MATLAB in Help Center and File Exchange

R2022a

### Community Treasure Hunt

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

Start Hunting!