Rect function with Array

7 visualizaciones (últimos 30 días)
kale
kale el 24 de Sept. de 2022
Editada: Matt J el 24 de Sept. de 2022
I would like to write my Rect function and I declared the following input variables:
A = 2; %amplitude
T0 = 3; %period
t = [0:Ts:T0]; %time vector base (Ts = 0.01 = time sampling)
The function I wrote is as follows:
function [y] = rect(T0, A, t)
if t < -T0/2
y = 0;
elseif ((t >= -T0/2) & (t <= T0/2))
y = amplitude;
else y = 0; %if t > T0/2
end
I think the problem is the comparison (in the if and elseif) of the vector t with the scalar T0/2, in fact by putting a breakpoint I seem to have noticed that the comparison of the if is only performed on the first element of t (i.e. 0) .. and not with all the others.
I am asking you to suggest the right syntax to use and also (possibly) tell me if I have got the reasoning behind this function wrong.
I thought of doing a for (or while) loop inside the rect function where I increment t=t+Ts, but I would like to avoid this by using the vector t already declared incremented by Ts (as I did)
Thanks!

Respuesta aceptada

Matt J
Matt J el 24 de Sept. de 2022
Editada: Matt J el 24 de Sept. de 2022
function [y] = rect(T0, A, t)
y= ((t >= -T0/2) & (t <= T0/2)) * A;
end
  2 comentarios
kale
kale el 24 de Sept. de 2022
Thank you.
What if I want a train of pulses (rectangular) ?
How do you modify your function ?
Matt J
Matt J el 24 de Sept. de 2022
Editada: Matt J el 24 de Sept. de 2022
You can use the function to create several pulses and add them together.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Language Fundamentals en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by