0

可能重复:
如何在 Matlab 中将嵌套 for 循环生成的值存储在数组中?

我有一个数字数组。例如 x = [4,9,8]。我用find(x)得到[1,2,3],然后find(x)+length(x)得到[4,5,6]。

我希望这个(在这种情况下,将 3 添加到数组中,以生成 1,2,3 4,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] 来自 find(x)+length(x) 循环,我想添加元素在 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)。我只是不确定如何进行“位置添加”。

然后我想将添加的结果存储在一个单独的数组中。

提前感谢您的时间和帮助!

4

1 回答 1

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(例如,我们添加[5, 6, 7]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.
于 2012-09-05T07:18:05.210 回答