MATLAB Answers

Manipulate amplitude without using linspace

29 views (last 30 days)
Aaron8298
Aaron8298 on 23 Jan 2021
Edited: Adam Danz on 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

  0 Comments

Sign in to comment.

Accepted Answer

Adam Danz
Adam Danz on 23 Jan 2021
Edited: Adam Danz on 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)

More Answers (1)

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

  1 Comment

Aaron8298
Aaron8298 on 23 Jan 2021
Thank you for your assistance, it works

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!