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如何为我解决与此相关的所有问题?请帮助..
答案 0 :(得分:2)
假设a
和b
已排序,您可以尝试此
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;
对于凌乱的代码感到抱歉,但它似乎得到了你想要的结果(有一些假设)。