Replacing zeros in a matrix with an interpolation
7 次查看(过去 30 天)
显示 更早的评论
I have a matrix, on which the values become larger as columns go, but some values in that matrix are zero.
E.g. [1,1,1;2,0,2;3,3,3]
I want to replace the values that are zero with an interpolation. In this example theres an increment of 1 per line, so the value zero should become the previous value in that column (1) plus the average increment value (1). Therefore becoming the value 2.
Returning the matrix [1,1,1;2,2,2;3,3,3]
So how can I do this given any matrix, with whatever values.
EDIT: Okay I probably got myself misunderstood, I dont want the zero values to be always the previous value + 1. Let me illustrate further:
M = [1,10;1,0;1,0;1,22]
-Values m(2,2) and m(3,2) are both zero.
-Values m(1,2) and m(4,2) are 10 and 22 which means in 3 rows there was an increment of 12 values, averaging and increment of 4 values per row.
-Interpolating, the values for m(2,2) and m(3,2) should be 14 and 18 respectively.
Thanks alot for you help, appreciated.
采纳的回答
Azzi Abdelmalek
2012-11-17
编辑:Azzi Abdelmalek
2012-11-17
Ok, if the first line is different from zero
a= [1,1,1;2,0,2;0,3,3]
inc=1;
idx=find(~a)
a(idx)=a(idx-1)+inc
5 个评论
Azzi Abdelmalek
2012-11-18
Bob, If you have a new problem, post a new question, and make it as clear as possible
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Logical 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!