2014-12-04 2 views
0

이 코드를 벡터화하려고합니다. 이것을 할 수 있습니까? 해결책을 찾으려고했지만 Google에서 좋은 결과를 찾을 수 없었습니다.MATLAB : MATLAB의 루프 벡터화

for pos=length1+1:length 
    X1(pos) = sim(net1, [demandPred(pos), demand(pos-1), X1(pos-1), X1(pos-2)]')'; 
    X2(pos) = sim(net1, [demandPred(pos), demand(pos-1), X2(pos-1), X2(pos-2)]')'; 
end 

미리 감사드립니다. :)

편집 1 :

내가 시뮬레이션 하겠어 모델은 간단한 GRNN입니다.

net1 = newgrnn([demand(169:trainElem), demand(169-1:trainElem-1), X1(169 - 1:trainElem - 1), X1(169 - 2:trainElem - 2)]', 0.09); 
+3

그냥 관찰 - 당신은 matlab에 내장 된 함수'length'를 변수로 사용해서는 안됩니다. 나는 Simulink에 익숙하지 않다. 그러나 아마도이 블록은 이것을 가능하게 할 수 있을까? http://nl.mathworks.com/help/simulink/slref/selector.html –

+0

먼저이 코드를 벡터화하는 이유는 무엇입니까? 구체적으로, 당신이 얻고 자하는 이득은 무엇입니까? 당신의 동기를 이해하는 것이 최선의 접근 방식에 영향을 미칠 수 있습니다. 또한 Simulink 모델을 편집 할 수 있습니까? 아니면 제공 한 MATLAB 코드 만 변경하면되는 벡터화 된 솔루션을 찾고 있습니까? – grungetta

+0

@grungetta : 코드를 벡터화하면 런타임이 단축된다는 사실을 알게되었습니다. –

답변

1

Simulink 모델을 벡터화 할 수 있습니까? 때때로. Can Simulink 모델을 벡터화 할 수 있습니까? 모델을 보지 않고 말할 수 없으며 m 코드에서 호출하는 방법 (질문에 표시된대로)은 아무런 의미가 없습니다.

벡터화의 예제는 상수 K에 추가되는 신호 s1이있는 모델을 고려하고 K 인 경우 다른 값에 대해 모델을 실행해야한다고 가정합니다. m 코드와 같은 루프를 사용할 수 있습니다 당신은 보여줍니다.) K에 대한 각각의 개별 요구 값에 대한 모델을 실행하십시오. 또는 K를 벡터로 만들 수 있습니다.이 경우 모든 값은 s1에 더 해지고 결과는 s1 + K (1), s1 + K (2), ..., s1 + K (n)을 생성하고, 이러한 모든 합산이 발생하기 위해서는 모델을 한 번만 실행하면된다.

하지만 모델에서 그런 종류의 작업을 수행 할 수 있는지 여부는 모델을 보지 않고 결정할 수 없습니다.