2
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 如何为我提供与此相关的所有问题的解决方案?请帮助..

4

2 回答 2

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 而引发错误。

于 2012-07-17T20:02:08.057 回答
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;

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

于 2012-07-17T19:43:06.580 回答