2017-03-14 12 views
1

は私が機能m(r,T,a,w)を定義し、私はr,T,w. は私がやりたいことは、これらのベクトルのそれぞれの最初の要素を取り、私の機能for a in 1:Tを反復し、合計を取り、第二の要素のために、この反復を繰り返すことである変数のためのベクトルを持っていますそのようなベクトルのように。 最後に、私はすべての合計からなるベクトルを持っていたいと思います。 私はあなたの助けに感謝します。私がこれまで試したどのようなネストされた繰り返しを実行するにはどうすればよいですか?

WRLEはそれぞれwの変数のためのベクター、rT、ある)

M = [] 
for w in W, r in R, T in LE 
    for a in 1:T 
    MM=sum(m(r,T,a,w)) 
    push!(M,MM) 
end 
end 

はっきりジュリアはImがしようとして何を認識しません実行する

+1

このタスクを実行しようとしたことを示し、そのコードの正確な問題を説明してください。 – avysk

+0

ありがとう、私は投稿を編集しました –

+2

"明らかにJuliaは何をしようとしているのかわかりませんでした。コードがクラッシュするなど? – akroy

答えて

4

構文:

for w in W, r in R, T in LE 
    ... 

は、同時にベクトルを反復処理しません。むしろ、それは製品と同等です:

for w in W 
    for r in R 
     for T in LE 
      ... 

これは、3つのベクトルを同時に繰り返すように思えます。その場合、あなたはzipを使用することができます。

for (w,r,T) in zip(W,R,LE) 
    ... 
0

マットの答えが正しいですが、あなたがそのようなタイプなど、いくつかの他のものを、改善することがあります、それが使用されないように、機能でこれを入れてグローバル変数。和のタイプが何であるか知っていますか? Float64、またはInt64を使用できますか? 例:

function myfun(W, R, LE) 
    M = Vector{Float64}() 
    for (w, r, T) in zip(W, R, LE), a in T 
     push!(M, sum(m(r, T, a, w))) 
    end 
    M 
end 
0

非常に参考になったコメントをありがとう。

MM = Vector{Float64}() 
    M = Vector{Float64}() 
    for (w, r, T) in zip(W, R, LE) 
     for a in 1:T 
      push!(MM, m(r,T,a,w)) 
     end 
      push!(M,sum(MM)) 
    end 
関連する問題