# Plotting square wave in matlab

15 views (last 30 days)
Aksh Chordia on 7 Jan 2021
Edited: Aksh Chordia on 8 Jan 2021
I dont know why but MATLAB is adding a rise time while plotting the square wave.
How to stop it from doing so?
I want perfect square wave, how can I achieve the same?
The code and png of figure is attached below.
Aksh
t = linspace(0,10e-9);
x = square(t*2*pi/(10e-9));
Y_max=x*370.0;
Y_min=x*323.4;
hold on
plot(t,Y_max,'LineWidth',3,'color',[203/255;1/255;98/255]);
plot(t,Y_min,'LineWidth',3,'color',[203/255;1/255;98/255]); hold off

Cris LaPierre on 7 Jan 2021
Edited: Cris LaPierre on 7 Jan 2021
This is because your x value is different for the point on the bottom compared to the point on top. Your x axis range is so small, that you are able to see this difference ( =1.0101e-10).
I guess technically, it has more to do with the ratio of to the range of x. You could try adding more data points to t to make it less apparent.
t = linspace(0,10e-9,1000);
x = square(t*2*pi/(10e-9));
Y_max=x*370.0;
Y_min=x*323.4;
hold on
plot(t,Y_max);
plot(t,Y_min); Cris LaPierre on 7 Jan 2021
You'll notice this same thing happens in the examples given in the doc, too.

William on 7 Jan 2021
Yes, the function square(x) returns a unique value, either +1 or -1, for each vallue of x. There is no value of x for which it returns both +1 and -1, so when you plot sin(x) vs (x), there is no value of x for which the plot will produce a line that is exactly vertical. In order to produce such a graph, you need to generate a data set in which there are two identical x-values at each transition, with one of them having a corresponding y-value of -1 and the other having a y-value of +1.
Aksh Chordia on 8 Jan 2021
Edited: Aksh Chordia on 8 Jan 2021
Got your point, thanks for that insight.

### Categories

Find more on Discrete Data Plots in Help Center and File Exchange

### Community Treasure Hunt

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

Start Hunting!