2017-08-03 146 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