2012-09-05 21 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.