使用重复值扩展数组,直到另一个数组值与MATLAB匹配

时间:2012-07-17 19:15:14

标签: matlab

a=[2 3 4 7 9 12 15 18 22]
b=[2 7 15]

结果应该是这样的

c=[2 2 2  7 7 7 15 15 15];

值应该重复,直到另一个矩阵值匹配。 Matlab如何为我解决与此相关的所有问题?请帮助..

2 个答案:

答案 0 :(得分:2)

假设ab已排序,您可以尝试此

c = b(sum(bsxfun(@(x,y) x >= y, a, b(:))));

这导致

c =
     2     2     2     7     7     7    15    15    15

请注意,这仅适用于b(1) == a(1)。如果b(1) < a(1)b(1)将重复,但它与a(1)不匹配,如果b(1) > a(1)由于下标索引小于1而引发错误。

答案 1 :(得分:1)

假设前两个数字总是相同的(否则结果的第一个数字是什么?):

prevj = b(1);
last = 1;
c = a;
for j = b(2:end)
    ind = find(c == j);
    c(last:ind-1) = prevj;
    last = ind;
    prevj = j;
end
c(last:end) = prevj;

对于凌乱的代码感到抱歉,但它似乎得到了你想要的结果(有一些假设)。