Manipulate amplitude without using linspace

1 vue (au cours des 30 derniers jours)
Aaron8298
Aaron8298 le 23 Jan 2021
Modifié(e) : Adam Danz le 23 Jan 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

Réponse acceptée

Adam Danz
Adam Danz le 23 Jan 2021
Modifié(e) : Adam Danz le 23 Jan 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)

Plus de réponses (1)

Image Analyst
Image Analyst le 23 Jan 2021
Use rescale():
x_t = rescale(x_t, -2, 1);
  1 commentaire
Aaron8298
Aaron8298 le 23 Jan 2021
Thank you for your assistance, it works

Connectez-vous pour commenter.

Catégories

En savoir plus sur Loops and Conditional Statements dans Help Center et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by