how can i plot a rectangular train wave ???
显示 更早的评论
hi.i want to plot a rectangular train wave with a given width and frequency.the wave should have positive value around the origin(i mean it should not start from the origin).what should i do???
4 个评论
Sara Hafeez
2012-12-2
MATLAB has a built in function for this.
Image Analyst
2012-12-2
What's it called? I didn't find it, unless you're referring to repmat().
Azzi Abdelmalek
2012-12-2
It' called square but there is some work to do, because it's default period is 2pi, and ...
Image Analyst
2012-12-2
square() is not a built-in function unless you have the Signal Processing Toolbox. As far as I can tell it's not part of base MATLAB. I'll add that toolbox to the "Products" below.
回答(3 个)
Image Analyst
2012-12-2
If you don't have the Signal Processing Toolbox, which has the square() function, then you could do it with repmat():
clc; % Clear command window.
% Create the signal using repmat().
halfWidth = 10;
oneCycle = [ones(1, halfWidth), zeros(1, halfWidth)]
numberOfCycles = 5;
fullSignal = repmat(oneCycle, [1, numberOfCycles])
% Signal has now been created, plot it.
plot(fullSignal, 'LineWidth', 5);
ylim([0 1.5]);
grid on;
% Enlarge figure to full screen.
set(gcf, 'units','normalized','outerposition',[0 0 1 1]);
1 个评论
Naga Sai
2017-5-23
how to create a square wave with out using repmat() or other functions of matlab
Azzi Abdelmalek
2012-12-2
编辑:Azzi Abdelmalek
2012-12-2
You can use the function square which generate a 2pi periodic square wave signal
w=50 % positive signal width in percentage
F=1 % signal frequency
T=1/F % signal period
w0=2*pi*F % signal pulse
ts=T/50 % sample time
np=2 % number of period = np*2
t=-np*T:ts:np*T; % time vector allowing np*2 period
y=square(w0*(t-T*w/200),w)
close;plot(t,y,'r')
Note that y is varying from -1 to 1, if you want vaiation from 0 to 1
y=(y+1)/2;
you can also add an amplitude
y=Amp*y
If you have'nt a function square, it's easy to create
function y=square(t,p)
% t: time vector
% p: width in percentage
% the period by default is 2*pi
tt=mod(t,2*pi)
idx1=find(tt<=2*pi*p/100)
y=-ones(1,numel(t))
y(idx1)=1
1 个评论
Naga Sai
2017-5-22
can you an explain this function briefly step by step please
yaseen
2022-9-23
0 个投票
w=50 % positive signal width in percentage
F=1 % signal frequency
T=1/F % signal period
w0=2*pi*F % signal pulse
ts=T/50 % sample time
np=2 % number of period = np*2
t=-np*T:ts:np*T; % time vector allowing np*2 period
y=square(w0*(t-T*w/200),w)
close;plot(t,y,'r')
1 个评论
Image Analyst
2022-9-24
This is not an original answer - it's just a repost of @Azzi Abdelmalek's code. Was posting it a mistake, like you were intending to run it rather than offer it as an Answer of your own creation? Do you want me to delete it for you?
类别
在 帮助中心 和 File Exchange 中查找有关 MATLAB 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!