Rectangular Function implementation in Matlab

 Akzeptierte Antwort

Azzi Abdelmalek
Azzi Abdelmalek am 20 Mär. 2013
Bearbeitet: Azzi Abdelmalek am 20 Mär. 2013

4 Stimmen

rect=@(x,a) ones(1,numel(x)).*(abs(x)<a/2) % a is the width of the pulse
x=-10:0.001:10
y=rect(x,2)
plot(x,y)

6 Kommentare

Rohan Repale
Rohan Repale am 25 Mär. 2013
Thank you very much.
also do you know, if rect function is related to the rectwin (rectangular window) function present in matlab?
Azzi Abdelmalek
Azzi Abdelmalek am 25 Mär. 2013
I am not sure to understand your question, the above rect function is not related to rectwin.
Rohan Repale
Rohan Repale am 25 Mär. 2013
Got it, thankyou.
alternatively, can I use rectpulse command available in matlab to do what you have done?
Azzi Abdelmalek
Azzi Abdelmalek am 25 Mär. 2013
Bearbeitet: Azzi Abdelmalek am 25 Mär. 2013
You can adapt square function
can someone please tell me how can i use a rectangular function or any function to visualize outliers in my data? i find the outliers in my data but i dnt know how to visualize them using a graph or plot.
rectangular function do require symbolic toolbox

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (2)

Johan Rincon Botia
Johan Rincon Botia am 16 Apr. 2022

2 Stimmen

I did the implementation for rect function with period w
My function has 4 arguments rect (T,n,amp,xtranslation), where T is the period, n is the periods that you want to show, amp is the amplitude and xtranslation is the translation at x-axis, for example, i want to do this signal:
with any period, like T = 20s, and i wanna show this 3 times,
This is how i use the function
T = 20; %Period
amplitude = 5; %Amplitude of the signal
num = 3; %Numbers of periods that you want to show
xtranslation =-8; % Translation x-axis
[t,y] = rect(T,num,amplitude,xtranslation); %the function return the time vector and amplitud vector
plot(t,y)%use t and y to plot your rect signal
An here is the implementation of the function:
function [t,y] = rect(T_period,num,ampli,xtranslation)
t = -T_period*num:0.01:T_period*num;
y_0=0;
y_1=1;
if xtranslation>=T_period/2
num = num+round((2*xtranslation/T_period))
end
for i=-num:num
y_0=y_0 + 0.*(t>T_period/2+(T_period*(i-1)) & t<T_period*num);
y_1=y_1 + 1.*(t>T_period*(i-1) & t<T_period/2+(T_period*(i-1)));
end
y= (y_0 + y_1)
y = ampli*(y-min(y));
t = t-xtranslation;
end
And this is the result, i hope that this will be useful for you!

0 Stimmen

rect=@(x,a) ones(1,numel(x)).*(abs(x)<a/2) % a is the width of the pulse
x=-10:0.001:10
y=rect(x,2)
plot(x,y)

1 Kommentar

俊豪 杨
俊豪 杨 am 28 Mär. 2021
excuse me ,could i ask y u a question?how can i use rect(x,y) in matlab?

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Mathematics finden Sie in Hilfe-Center und File Exchange

Produkte

Community Treasure Hunt

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

Start Hunting!

Translated by