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

4 次查看(过去 30 天)
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, []);

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Matrix Indexing 的更多信息

产品


版本

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by