How to replace every value with the index of the value to the left of it

4 ビュー (過去 30 日間)
sunny blue
sunny blue 2021 年 10 月 10 日
コメント済み: sunny blue 2021 年 10 月 10 日
This way the left most column is 0. I initially tried using a while loop but with a really big matrix, it takes way too long. so if I had a matrix
x= [ 2 3 4 5 6 ;
8 9 10 11 12 ]
the matrix i would want is
[ 0 1 3 5 7 9;
0 2 4 6 8 10 ]
I'm kind of at a crossroads here.

回答 (1 件)

DGM
DGM 2021 年 10 月 10 日
There's this:
x = [ 2 3 4 5 6 ; 8 9 10 11 12 ]
x = 2×5
2 3 4 5 6 8 9 10 11 12
idx = reshape(1:numel(x),size(x));
out = [zeros(size(x,1),1) idx(:,1:end-1)]
out = 2×5
0 1 3 5 7 0 2 4 6 8
  4 件のコメント
Jan
Jan 2021 年 10 月 10 日
The output needs to have one column more than the input. Maybe this matchs the needs:
out = reshape([0, 0, 1:numel(x)], 2, []);
sunny blue
sunny blue 2021 年 10 月 10 日
ok thank you!

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

カテゴリ

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

製品


リリース

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by