# Create an alternating matrix

2 views (last 30 days)
John Carroll on 30 Nov 2022
Commented: John Carroll on 30 Nov 2022
Hello. I am looking to create a 1xn matrix where I would enter a max value and a step size for the vector where each value alternates sign. For example I would enter a max value of 20 and a step size of 5 and the result would produce the following matrix;
[0 5 -5 10 -10 15 -15 20 -20]

DGM on 30 Nov 2022
Edited: DGM on 30 Nov 2022
There are many ways. Here's one.
% parameters
st = 5;
ev = 20;
A = [0 kron(st:st:ev,[1 -1])]
A = 1×9
0 5 -5 10 -10 15 -15 20 -20
Here's another:
B = repmat(0:st:ev,[2 1]).*[1; -1];
B = B(2:end)
B = 1×9
0 5 -5 10 -10 15 -15 20 -20
Here's another:
C = [0 repelem(st:st:ev,2)];
C(3:2:end) = -C(3:2:end)
C = 1×9
0 5 -5 10 -10 15 -15 20 -20
John Carroll on 30 Nov 2022
This works prefectly. I was completely unaware of the kron command. Thank you.

VBBV on 30 Nov 2022
maxV = 20;
stepS = 5;
I = zeros(1,2*(maxV/stepS)+1);
I1 = 0:stepS:maxV;
I2 = -I1(2:end);
I(1:2:end) = I1;
I(2:2:end) = I2;
I
I = 1×9
0 -5 5 -10 10 -15 15 -20 20
John Carroll on 30 Nov 2022
This works great as well. Thank you.

### 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!