我有两个不同长度的向量:
a=[1 2 3 4 5 6 7 8 9 10]
b=[1 2 3 4 5]
有没有办法像这种随机组合一样匹配和组合它们?
A B
1 2
2 3
3 5
4 3
5 2
6 1
7 3
8 5
9 2
10 1
答案 0 :(得分:4)
问题不是很明确,但如果您想从向量a
中抽取10个值(b
的长度),则可以使用randsample函数替换你有统计工具箱:
[a; b(randsample(numel(b),numel(a),true))]
ans =
1 2 3 4 5 6 7 8 9 10
1 5 5 3 5 1 3 5 4 5
如果您没有统计工具箱,您可以轻松自己生成索引:
[a; b(randi(numel(b),size(a)))]
ans =
1 2 3 4 5 6 7 8 9 10
4 1 2 1 1 4 4 2 5 1
答案 1 :(得分:0)
听起来我想要将矢量A中的每个元素与矢量B中的元素配对。
这样做的一种方法如下:
%replicate B so that it is at least as big as A
c = repmat(b, 1, ceil(length(a)./length(b)));
% randomly shuffle the resulting vector
c = c(randperm(length(c)));
% crop it to the same length as A
c = c(1:length(a));