# how to generate square wave in matlab

268 visualizaciones (últimos 30 días)
md el 16 de Jun. de 2014
Comentada: Vedanta Mohapatra el 1 de Oct. de 2021
Hi,
I intend to generate a square wave with respect to time by following characteristic:
I want to generate square-wave force demand of 1 KN at 10 Hz. That means amplitude will be between 0 to 1000 and time will be between 0 to 1 (sec) with .1 interval.
##### 0 comentariosMostrar -2 comentarios más antiguosOcultar -2 comentarios más antiguos

Iniciar sesión para comentar.

Image Analyst el 16 de Jun. de 2014
Editada: Image Analyst el 24 de Nov. de 2020
Make one period, then use repmat() to replicate as many times as you want.
% Now make one cycle with amplitude 1000 and 200 elements.
onePeriod = 1000 * [ones(1, 100), zeros(1, 100)];
% 200 elements is supposed to be 0.1 seconds so find out delta t.
dt = 0.1 / numel(onePeriod);
% Define number of cycles.
numCycles = 10;
% Copy this period that many times.
fullWaveForm = repmat(onePeriod, [1, numCycles]);
% Make time axis from 0 to 1 second.
t = dt * (0 : (numel(fullWaveForm) - 1));
% Now plot it.
plot(t, fullWaveForm, 'b-', 'LineWidth', 2);
FontSize = 20;
xlabel('Time (seconds)', 'FontSize', FontSize);
ylabel('Amplitude', 'FontSize', FontSize);
title('Square Wave With 10 Cycles', 'FontSize', FontSize);
grid on;
##### 2 comentariosMostrar NingunoOcultar Ninguno
TANMAYA KAANR el 15 de Jun. de 2017
Just Put a saturation block with lower limit zero. It will give only Positive value.
Image Analyst el 15 de Jun. de 2017
I don't know what that means. What is a "saturation block"? Is that Simulink? The poster said "in matlab" but if your function is for Simulink, then perhaps your post will help Simulink users.

Iniciar sesión para comentar.

### Más respuestas (4)

Rashmil Dahanayake el 16 de Jun. de 2014
t=0:.001:1;
f=10;
sq=1000*0.5*(square(2*pi*f*t)+1);
plot(t,sq)
##### 0 comentariosMostrar -2 comentarios más antiguosOcultar -2 comentarios más antiguos

Iniciar sesión para comentar.

Bill Tubbs el 26 de Mzo. de 2020
Based on Rashmil Dahanayake's idea I made a simple function to generate regular square waves for discrete time.
function sq = square_dt(n,period)
% Square wave in discrete time
repeats = n/period;
sq = square(2*pi*linspace(0,repeats-1/n,n));
end
(Works best when period is an even number)
Example
>> square_dt(10,4)
ans =
1 1 -1 -1 1 1 -1 -1 1 1
If you want only the positive cycles, modify the code like Rashmil's:
function sq = square_dtp(n,period)
% Square wave in discrete time
repeats = n/period;
sq = (square(2*pi*linspace(0,repeats-1/n,n))+1)/2;
end
Example
>> square_dtp(10,4)
ans =
1 1 0 0 1 1 0 0 1 1
##### 0 comentariosMostrar -2 comentarios más antiguosOcultar -2 comentarios más antiguos

Iniciar sesión para comentar.

udhaya ram mohan el 18 de Oct. de 2016
i need to generate the square wave with positive cycle only please send me a code for it
##### 1 comentarioMostrar -1 comentarios más antiguosOcultar -1 comentarios más antiguos
Walter Roberson el 18 de Oct. de 2016

Iniciar sesión para comentar.

pisini padmaja el 23 de Nov. de 2020
Editada: Image Analyst el 24 de Nov. de 2020
%square function%
clc;
clear all;
close all;
t=0:0.01:2;
x=sin(2*pi*t);
subplot(2,1,1);
plot(t,x,'g');
xlabel('time');
ylabel('amplitude');
title('square signal 318126512095');
subplot(2,1,2);
stem(t,x,'r');
xlabel('time');
ylabel('amplitude');
title('square sequence 318126512095');
##### 2 comentariosMostrar NingunoOcultar Ninguno
Image Analyst el 24 de Nov. de 2020
This does not look like an Answer for how to create a square wave. Here is what your code produces:
%square function%
clc;
clear all;
close all;
t=0:0.01:2;
x=sin(2*pi*t);
subplot(2,1,1);
plot(t,x,'g');
xlabel('time');
ylabel('amplitude');
title('square signal 318126512095');
subplot(2,1,2);
stem(t,x,'r');
xlabel('time');
ylabel('amplitude');
title('square sequence 318126512095');
Vedanta Mohapatra el 1 de Oct. de 2021
You have to use signum to generate some sort of square wave

Iniciar sesión para comentar.

### Categorías

Más información sobre Language Fundamentals 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