You are here : matlabSignal Processingsquare

# square() - Signal Processing

x = square(t) generates
a square wave with period 2π for the elements
of time vector t. square(t) is
similar to sin(t),
but creates a square wave with peaks of ±1 instead of a sine
wave.x = square(t,duty) generates
a square wave with specified duty cycle, duty,
which is a number between 0 and 100. The duty cycle is
the percent of the period in which the signal is positive.

### Syntax

x = square(t)x = square(t,duty)

### Example

Generate Square WavesOpen This Example
Create a vector of 100 equally spaced numbers from
to
. Generate a square wave with a period of
.
t = linspace(0,3*pi)';
x = square(t);
Plot the square wave and overlay a sine. Normalize the x-axis by
. The generated square wave has a value of
at even multiples of
and a value of
at odd multiples of
. It is never
.plot(t/pi,x,'.-',t/pi,sin(t))
xlabel('t / \pi')
grid on

Repeat the calculation, but now evaluate square(2*t) at 121 equally spaced numbers between
and
. Change the amplitude to
. Plot the wave and overlay a sine with the same parameters. This new wave is negative at
and positive at the endpoints.t = linspace(-pi,2*pi,121);
x = 1.15*square(2*t);

plot(t/pi,x,'.-',t/pi,1.15*sin(2*t))
xlabel('t / \pi')
grid on

Duty Cycle of Square WaveOpen This Example
Generate a 30 Hz square wave sampled at 1 kHz for 70 ms. Specify a duty cycle of 37%. Add white Gaussian noise with a variance of 1/100.
t = 0:1/1e3:0.07;
y = square(2*pi*30*t,37)+randn(size(t))/10;
Compute the duty cycle of the wave. Plot the waveform and annotate the duty cycle.dutycycle(y,t)

ans =

0.3639