相邻对的平均值'插值'

时间:2016-03-24 14:48:39

标签: matlab vector replace

我有两个向量,例如

A = [1,   3,   6,   7]
B = [2.0, 5.1, 2.2, 1]

我想创建一个向量CC1,因此它会创建缺少的元素,并为每个元素分配 平均值 B中的相应周围元素。

C  = [1,   2,    3,   4,    5,    6,   7]
C1 = [2.0, 3.55, 5.1, 3.65, 3.65, 2.2, 1]

最好的方法是什么?

1 个答案:

答案 0 :(得分:0)

要使用interp1,您需要

Ci = [1, 2, 3, 4.5, 4.5, 6, 7]

然后

C1 = interp1(A,B,Ci)

然而,生成Ci与生成C1一样困难。我想在这种情况下你最好的选择是循环:

%// Assuming A is sorted
C = min(A):max(A);
C1 = zeros(size(C));
Acounter = 1;
for ii = 1:numel(C)
    if C(ii)==A(Acounter)
        C1(ii) = B(Acounter);
        Acounter = Acounter + 1;
    else
        C1(ii) = (B(Acounter) + B(Acounter-1))/2;
    end
end