Manipulate amplitude without using linspace

7 Ansichten (letzte 30 Tage)
Aaron8298
Aaron8298 am 23 Jan. 2021
Bearbeitet: Adam Danz am 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

Akzeptierte Antwort

Adam Danz
Adam Danz am 23 Jan. 2021
Bearbeitet: Adam Danz am 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)

Weitere Antworten (1)

Image Analyst
Image Analyst am 23 Jan. 2021
Use rescale():
x_t = rescale(x_t, -2, 1);

Kategorien

Mehr zu Mathematics finden Sie in Help Center und File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by