Reducing nonzero values in vector and adding to subsequent zero values.
2 次查看(过去 30 天)
显示 更早的评论
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 个评论
采纳的回答
Image Analyst
2016-2-16
编辑:Image Analyst
2016-2-16
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.
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Creating and Concatenating Matrices 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!