更改数组mathematica中的元素

时间:2014-09-06 10:49:20

标签: arrays wolfram-mathematica

gammaSample = RandomVariate[GammaDistribution[2, 2], 10];
xArray = Array[0, 10];
yArray = Array[0, 10];
Histogram[gammaSample];
PearsonChiSquareTest[gammaSample]
sorted = Sort[gammaSample];
Print[sorted];
For[i = 1, i <= 10, i++; ReplacePart[xArray, i -> (i - 1/2)/100];]
xArray

您好! 我只想更改数组中的值。我也试过xArray [i] =(i - 1/2)/ 100,但它不起作用。我如何在mathematica中做到这一点?

2 个答案:

答案 0 :(得分:0)

mathematica中的数组只是列表,所以你应该更新列表,所以你应该更新 元素到位。通常,mathematica中的函数返回新对象,而不是更新 现有的,像大多数函数式语言一样,所以下面的代码不会改变 数组的内容     在[5]中:= array = {1,2,3,4}

Out[5]= {1, 2, 3, 4}

In[6]:= ReplacePart[array, 3 -> 10]

Out[6]= {1, 2, 10, 4}

In[7]:= array

Out[7]= {1, 2, 3, 4}

所以你可以改变for循环以更新代替数组,我想在那里 是For循环的一个小错误,它使用逗号而不是分号来分隔循环 变量和循环体,所以更改代码如下:

In[24]:= For[i = 1, i <= 10, ++i, xArray[[i]] = (i - 1/2)/100;]

In[25]:= xArray

Out[25]= {1/200, 3/200, 1/40, 7/200, 9/200, 11/200, 13/200, 3/40, \
17/200, 19/200}

答案 1 :(得分:0)

虽然你可以像@ user2903066那样说,这是为了更新xArray,我建议你使用Mathematica,就像它本来要使用的那样。它还可以使您的代码更易于阅读。在此示例中,您可以省略xArray的声明并替换for循环,如下所示:

xArray = Table[(i - 1/2)/100, {i, 1, 10}]