2015-09-02 78 views
0

我遇到了以下任务的问题。我有一个虚拟数组的零和两个相同大小的向量。例如:n次使用不同的值重复n次数值

array1 = zeros(750,1); 
vector1 = [1;3;5]; 
vector2 = [100;250;400]; 

我寻找填补ARRAY1如下:

repeat element 1 in vector1 100 times 
repeat element 2 in vector2 250 times 
repeat element 3 in vector1 400 times 

所得载体应具有7行和1列。我试着玩repmat,但不能让它输出1维。我也听说过bsxfun,但我从来没有收到我需要的数据。我很感激任何有用的建议。

我有Matlab 2013,所以我不能使用我发现的奇特功能repelem可能是有用的。

+0

所以,你想拥有的'100个第一值array1'等于1,250个未来值等于3,400个未来值等于5,其他值相等为0? – Ikaros

+0

我认为他犯了一个错字,意思是只把'vector1'元素放到'array1'中,那么重复的确是正确的。 – Adriaan

回答

1
array1(1:100) = vector1(1); 
array1(101:350) = vector2(2); 
array1(351:750)=vector1(3); 

但为什么总长度为2850我是无法理解。

0

也许喜欢的东西:

vector1 = [1;3;5]; 
    vector2 = [100;250;400]; 
    temp = linspace(1,sum(vector2),sum(vector2))'; 
    array1 = zeros(size(temp)); 

    for ii = 1:length(vector2) 
     array1 = array1 + (temp <= sum(vector2(1:ii)) & not(array1))*vector1(ii); 
    end 
    clear temp ii 
+0

这只是一个缓慢且耗费内存的版本@Benoit_11的标记副本。 – Adriaan

+0

我以为vector1和vector2应该是某种参数。 – JimPanse