2016-11-07 1 views
0

while 루프가 있는데 값을 성공적으로 저장하는 방법을 결정할 수 없었습니다. 어떤 도움이라도 대단히 감사하겠습니다.while 루프를 사용하여 값 저장 (matlab)

n = 0; a = 21; b = 0; c = 0; y = 37.6991; T = 18.5; z = 0.1591; d = 0; f = 15.3049; q = 2.2391e4; e = 5; x = 60; 
while n < x 
     a = a + b     
     c = y*(T-a)/z;     
     d = f*c;    
     b = d/q;     
     n = n + e; 
    end 

내가 가게에 노력하고있어 값이 나는 값이 루프 내부 올바른지 말할 수 있지만, 단지 값을 올바르게 저장할 수없는 것, a입니다.

+0

내부 값이 정확한지 어떻게 알 수 있습니까? 귀하의 코드를 실행하면 오류가 발생합니다. "n 행 1 열 7 근처에 정의되지 않았습니다."완전한 최소 작동 예제를 제공해야합니다. – stephematician

+0

유효한 포인트, 죄송합니다. 지금 업데이트하겠습니다. – Scott

+0

수정 됨, 업데이트 됨 코드가 오류없이 작동하는지 확인하십시오. – Scott

답변

1

또 다른 접근 방식은 비교적 간단한 재발 관계임을 인식하는 것입니다 :.

n = 0; a = 21; y = 37.6991; T = 18.5; z = 0.1591; f = 15.3049; q = 2.2391e4; e = 5; x = 60; 
while n < x 
    a(end+1) = a(end) + f * y * (T - a(end))/(q * z); 
    n = n + e; 
end 

이 계산은 벡터화 할 수 있지만, 정확히 동일한 출력을 원하는 경우 조심 좀해야 : 벡터화 때

n = 5:5:55; y = 37.6991; T = 18.5; z = 0.1591; f = 15.3049; q = 2.2391e4; a0 = 21; 
alpha = f * y * T/(q * z); 
beta = (1 - f * y/(q * z)).^(0:length(n)) 

a = a0 * beta + alpha * [0 cumsum(beta(1:end-1))]; 
코드는 명확성을 잃을 것으로 보인다

(나에게)를, 그래서 아마 것 ~을 선호하다 이 시나리오에서 루프.

0

이 시도 :

counter = 1; 
n = 0; a = 21; b = 0; c = 0; y = 37.6991; T = 18.5; z = 0.1591; d = 0; f = 15.3049; q = 2.2391e4; e = 5; x = 60; 
var = zeros(1,12); 
while n < x 
     a = a + b;     
     c = y*(T-a)/z;     
     d = f*c;    
     b = d/q;     
     n = n + e; 
     var(counter) = a; 
     counter = counter+1; 
end 

나는 a의 값을 저장하는 벡터 인 var라는 변수를 추가했습니다. 순서 t의 osave 런타임에서 나는이 엄격하게 필요하지 않지만 권장합니다 (변수 var = zeros(1,12);의 예상 크기로 초기화

+1

꼭 필요하지는 않습니다. **** *** *** *** ** recommended **. –

+0

작동합니다. 고맙습니다. 비슷한 것을 시도했지만 시도 할 수 없었습니다. 무엇이든 할 수있는 것처럼 보입니다. – Scott

관련 문제