# 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 ビュー (過去 30 日間)
Srh Fwl 2024 年 4 月 13 日
コメント済み: Voss 2024 年 4 月 14 日
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.

サインインしてコメントする。

### 採用された回答

the cyclist 2024 年 4 月 13 日
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));

サインインしてコメントする。

### その他の回答 (1 件)

Voss 2024 年 4 月 13 日
c = 0.5;
A = [1,2,3;1,2,3;1,2,3]
A = 3x3
1 2 3 1 2 3 1 2 3
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
One way:
N = size(A,1);
result = c*(N:-1:1).'+A
result = 3x3
2.5000 3.5000 4.5000 2.0000 3.0000 4.0000 1.5000 2.5000 3.5000
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
Another way:
N = size(A,1);
result = cumsum(c*ones(N,1),'reverse')+A
result = 3x3
2.5000 3.5000 4.5000 2.0000 3.0000 4.0000 1.5000 2.5000 3.5000
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
##### 5 件のコメント3 件の古いコメントを表示3 件の古いコメントを非表示
Srh Fwl 2024 年 4 月 14 日
Thank you so much, Voss. I am currently on the road, but look forward to checking this out in more detail later. I did mean "faster" so will think about why that is an issue for me but not you. Thank you very much for thinking about this!
Voss 2024 年 4 月 14 日
No problem. I was mostly just curious what you meant by "better". Thanks for clarifying you meant faster. Anyway, the time difference is not much.

サインインしてコメントする。

### カテゴリ

Help Center および File ExchangeMatrix Indexing についてさらに検索

R2024a

### Community Treasure Hunt

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

Start Hunting!

Translated by