# Creating a function similar to a sawtooth function

3 views (last 30 days)
John Carroll on 26 Oct 2022
Commented: John Carroll on 27 Oct 2022
Hello
I am trying to create a function similar to the sawtooth function. I would like a simple set of commands that would create a 1xn matrix of values based on the input of a maximum number and step size. For example I'd like to give the input of 20 for the maximum and a step size of 5 and receiver a matrix of the following form.
[0 5 10 15 20 15 10 5 0 -5 -10 -15 -20 -15 -10 -5 0]
The sawtooth function seems to create something similar but I was hoping someone could seggest another way that could produce the matrix as I am showing.
Thank you

Voss on 26 Oct 2022
n = 17;
max_val = 20;
step_val = 5;
m = max_val/step_val;
temp = step_val*[0:m m-1:-1:-m -m+1:-1];
result = repmat(temp,1,ceil(n/numel(temp)));
result = result(1:n)
result = 1×17
0 5 10 15 20 15 10 5 0 -5 -10 -15 -20 -15 -10 -5 0
Les Beckham on 27 Oct 2022
FWIW, here is another approach where you specify the number of cycles instead of the number of data points.
n = 5; % number of cycles
max_val = 20;
step_val = 5;
temp = 0:step_val:max_val;
result = [repmat([temp(1:end-1) flip(temp(2:end))], 1, n) 0];
plot(result)
grid on
John Carroll on 27 Oct 2022
I'm going to try this one as well and see if it rans any better in my code. Thanks.

### Categories

Find more on Logical in Help Center and File Exchange

R2022a

### Community Treasure Hunt

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

Start Hunting!