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)。が一致しない場合や、添え字インデックスが1より小さいためにエラーがスローされた場合b(1) < a(1)は、b(1)が繰り返されます。a(1)b(1) > a(1)

于 2012-07-17T20:02:08.057 に答える
1

最初の 2 つの数値が常に同じであると仮定すると (そうでない場合、結果の最初の数値はどうなるでしょうか?):

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 に答える