Reducing nonzero values in vector and adding to subsequent zero values.
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
virkuz000
el 16 de Feb. de 2016
Comentada: virkuz000
el 16 de Feb. de 2016
I have a large vector of mostly zeros. I wish to divide the nonzero values by a value of N, and then add the divided value to the subsequent N-1 zero values. For example, if my vector is [....0 0 15 0 0 0 0 0 0 0....] and N=5, I want it to come out [....0 0 3 3 3 3 3 0 0 0....]. Thank-you for any tips!
0 comentarios
Respuesta aceptada
Image Analyst
el 16 de Feb. de 2016
Editada: Image Analyst
el 16 de Feb. de 2016
This works:
vector = [0 0 15 0 0 0 0 0 0 0 4 0 0 0 0 0 0 9 0]
N=5
nonZeroIndexes = find(vector ~= 0)
for k = 1 : length(nonZeroIndexes);
index1 = nonZeroIndexes(k)
index2 = min(index1 + N - 1, length(vector))
vector(index1 : index2) = vector(index1)/N;
end
% Display
vector
For max robustness, you'll have to define what you want to do in the case where two non-zero numbers are separated by less than N elements. It's not clear how you want to handle that.
Más respuestas (0)
Ver también
Categorías
Más información sobre Creating and Concatenating Matrices en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!