2017-08-03 106 views
3

我正在尝试在Julia中使用边界进行集成,其中fIr是长度相同的数组。我知道这是不正确的,但这是我想要做的事情的要点。在for循环中使用增量

a = zeros(1:length(fI)) 
    for i = 1:length(fI) 
     a[i] = (fI[i+1] - fI[i])/(r[i+1] - r[i]) 
    end 

如何在Julia中设置n + 1的增量?在别处找到答案没有任何运气。

只要让我知道我是否可以澄清任何事情。我对这门语言还很陌生。

回答

3

我不完全确定你想要做什么,但它看起来像你想创建一个基于其他变量中的元素之间的差异的新变量。如果这是您的使用案例,您可以使用diff,例如

fI, r = rand(10), rand(10) 
a = diff(fI) ./ diff(r) 
+0

这似乎工作更多我想要的。 我应该澄清,我实际上是F(r)。对于r的每两个点,一个包含1000个元素的数组,我想要找出它们之间F(r)的差异。 – ellielinc

+0

类似'r = rand(1000); f(x)= x^2; diff(f。(r))'? –

+0

F(r)和r是从数据文件中给出的。所以我从字面上想要上面给出的等式。从数组中,我想从第二个值中减去第一个值,依此类推。这是集成的一部分,所以必须有一个简单的方法来做到这一点,我只是无法找到它。 – ellielinc

2

范围由start:stepsize:end指定。因此答案是for i = 1:(n+1):length(fI)

+0

好了,我应该怎么定义正然后?那也应该用'n = 1:length(fI)'? – ellielinc

+0

'1:n:length(fI)','n'就是你想跳过的项数。我不知道你的问题,所以我不知道你想如何设置'n'。 –

1

你的代码,因为会崩溃的最后一个“我”您访问超过数组长度

fI[i+1] = fI[length(fI)+1] 


a = zeros(1:length(fI)) 
for i = 1:length(fI) 
    a[i] = (fI[i+1] - fI[i])/(r[i+1] - r[i]) 
end 

也许你打算以下

n = length(fI) - 1 
a = zeros(1:n) 
for i = 1:n 
    a[i] = (fI[i+1] - fI[i])/(r[i+1] - r[i]) 
end