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

4 visualizaciones (últimos 30 días)
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.

Respuestas (1)

DGM
DGM el 10 de Oct. de 2021
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 comentarios
Jan
Jan el 10 de Oct. de 2021
The output needs to have one column more than the input. Maybe this matchs the needs:
out = reshape([0, 0, 1:numel(x)], 2, []);

Iniciar sesión para comentar.

Categorías

Más información sobre Matrix Indexing en Help Center y File Exchange.

Productos


Versión

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by