Reducing nonzero values in vector and adding to subsequent zero values.
1 visualizzazione (ultimi 30 giorni)
Mostra commenti meno recenti
virkuz000
il 16 Feb 2016
Commentato: virkuz000
il 16 Feb 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 Commenti
Risposta accettata
Image Analyst
il 16 Feb 2016
Modificato: Image Analyst
il 16 Feb 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.
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Logical in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!