how to generate square wave in matlab
269 次查看(过去 30 天)
显示 更早的评论
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.
Please someone help me.
0 个评论
采纳的回答
Image Analyst
2014-6-16
编辑:Image Analyst
2020-11-24
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 个评论
TANMAYA KAANR
2017-6-15
Just Put a saturation block with lower limit zero. It will give only Positive value.
Image Analyst
2017-6-15
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.
更多回答(4 个)
Bill Tubbs
2020-3-26
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 个评论
udhaya ram mohan
2016-10-18
i need to generate the square wave with positive cycle only please send me a code for it
1 个评论
pisini padmaja
2020-11-23
编辑:Image Analyst
2020-11-24
%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 个评论
Image Analyst
2020-11-24
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');
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!