2012-09-05 57 views
0

可能重複:
How to store value generated from nested for loop in an array, in Matlab?我怎麼會去這個任務 - Matlab的

我的數字數組。例如x = [4,9,8]。我使用find(x)來獲得[1,2,3],然後find(x)+ length(x)來獲得[4,5,6]。

我想要這個(在這種情況下,在數組中添加3,使1,2,3,6,5,6,7,8,9 ...的序列)進行n次,所以我需要一個循環。

現在用數組x,我想添加[4,9,8]到[1,2,3],這給出了[5,11,11]。我有[1,2,3] ... [10,11,12] ... [n,n + 1,n + 2] from find(x)+ length(x)loopable,I想要將x中的元素添加到相應位置中的元素中,在三個數組中。

因此,例如,[4,5,6] 5在位置2處。x = [4,9,8]。 9位於x的位置2。因此,我想添加9到5.我想爲每個元素(在這種情況下,這三個元素中的每一個)執行此操作。我將9到11和9到11加起來,因爲兩個數字在它們各自的陣列中位於'2'位置。

我正在考慮使用嵌套for循環,照顧find(x)+ length(x)。我只是不確定如何使'位置增加'發生。

然後,我想將添加的結果存儲在單獨的數組中。

在此先感謝您的時間和幫助!

+0

我有嘗試使用嵌套for循環,我可以得到序列罰款,只是不正確的補充 - 即那些基於位置。到目前爲止,我只能獲得例如[4,9,8]加到[1,2,3]使[5,11,11]然後[4,9,8]加到[4,5,6]中使[8,14,14 ]。這並不是我所追求的。 – JayDave

+0

你開始的輸入是'x = [4,9,8]'。我無法看到你的輸出結果......例如,你爲什麼不想要[4,9,8] + [4,5,6] = [8,14,14]?這對我來說似乎是完全合理的。 –

+0

我希望的輸出是那個步驟[14,20,20]。這可以通過在數組中添加9來獲得[5,11,11]。 9對應於x中的第2個位置。在我的系列數組中(那些[1,2,3] [4,5,6] [7,8,9] [10,11,12] ....)我想將x中的元素添加到系列陣列中的元素基於它們的位置。所以,由於5和11位於它們的數組的第二個位置,因此我想將9添加到它們中,因爲9位於x內的第2個位置。 – JayDave

回答

1

那麼,我們就先從

x = [4,9,8] 

讓我們添加[1, 2, 3]

x + [1, 2, 3] 
ans = 
    5 11 11 

更靈活的方式

x + (1 : length(x)) 
ans = 
    5 11 11 

如果你不希望在1,但在b啓動(說,我們加到x):

b = 5; 
x + b + (0 : length(x) - 1) 
ans = 
    9 15 15 

我想這應該讓你去,你現在可以添加你的循環。

警告:你有一個非常奇怪的方式使用find()。只是爲了確保:find(x)返回x中的非零條目的索引。如果向量x的所有元素都是非零的,你有平等

find(x) == 1 : length(x) 

如果x任何一個元素是零,您遇到的問題,將其添加到find(x)時:

x = [4, 9, 0, 8]; 
find(x) 
ans = 
    1  2  4 

x + find(x) 
Error using + 
Matrix dimensions must agree.