2015-09-02 76 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