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

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

5 Comments

You can draw the lines directly
x=[0.5 0.5];
y=[-12 -1];
x0=[-0.5 0.5];
y0=[-1 -1];
h=plot(x,y,-x,y,x0,y0,x,-y,-x,-y,x0,-y0);
%you can add the box in middle similarly
set(gca,'Color','k')
set(h,'Color','w')
axis([-12 12 -12 12])
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])
Follow the advice of @Dyuman Joshi.
@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?

Sign in to comment.

Answers (1)

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 2-D and 3-D Plots in Help Center and File Exchange

Products

Release

R2022a

Tags

Asked:

on 4 Jan 2023

Community Treasure Hunt

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

Start Hunting!