Manipulate amplitude without using linspace

2 visualizaciones (últimos 30 días)
Aaron8298
Aaron8298 el 23 de En. de 2021
Editada: Adam Danz el 23 de En. de 2021
I have a signal which I converted to a square wave however, the amplitude needs to be set in a range of -2 to 1 without using linspace. Here is the code I have so far
t=0:0.1:2*pi
x_t1=sin(2*pi*t)+3*cos(6*pi*t);
x_t=square((x_t1/0.5),25)-1;%creates square wave with a period of 0.5 and duty cycle of 25 percent, subtracting 1 makes amplitude -2 to 0
plot(x_t)
I know the square function automatically makes the amplitude range -1 to 1 but I am stuck on how else to manipulate the code. Thank you for the help

Respuesta aceptada

Adam Danz
Adam Danz el 23 de En. de 2021
Editada: Adam Danz el 23 de En. de 2021
Since square returns values in the range of [-1,1], rescaling to [-2,1] is as easy as multiplying by 1.5 and subtracting 0.5 which is ~4x faster than rescale().
t=0:0.1:2*pi;
x_t1=sin(2*pi*t)+3*cos(6*pi*t);
x_t=square((x_t1/0.5),25)*1.5-.5;
% ^^^^^^^
plot(x_t)

Más respuestas (1)

Image Analyst
Image Analyst el 23 de En. de 2021
Use rescale():
x_t = rescale(x_t, -2, 1);

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by