# How to add a cumulative constant to all values on each row of a matrix, starting from the bottom row and ending at the top row?

4 views (last 30 days)

Show older comments

I have a matrix that is very large. A small example is:

1 2 3

1 2 3

1 2 3

I need to add a constant to each row, starting at the bottom row. The additon should be cumulative. For example, if the constant is 0.5, the matrix should become:

2.5 3.5 4.5

2.0 3.0 4.0

1.5 2.5 3.5

I know to use "cumsum" for cumulative addition in Matlab but the indexing required in this problem exceeds my skills. I would be vey grateful for any help.

##### 0 Comments

### Accepted Answer

the cyclist
on 13 Apr 2024

There are many ways to do this. Here is one way:

% Inputs

in = [1 2 3;

1 2 3;

1 2 3];

constant = 0.5;

% Algorithm

[m,n] = size(in);

out = in + kron(constant*(m:-1:1)',ones(1,n));

##### 0 Comments

### More Answers (1)

Voss
on 13 Apr 2024

c = 0.5;

A = [1,2,3;1,2,3;1,2,3]

One way:

N = size(A,1);

result = c*(N:-1:1).'+A

Another way:

N = size(A,1);

result = cumsum(c*ones(N,1),'reverse')+A

##### 5 Comments

Voss
on 14 Apr 2024

### See Also

### Categories

### Community Treasure Hunt

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

Start Hunting!