2013-11-09 28 views
0

我正在使用遞歸函數,但我想要存儲cp和軸向的所有中間值。但我不知道它在遞歸函數中存儲中間值

[cp,axial]=powerCoefficient(nturbines) 

function [cp,axial]=powerCoefficient(iturbines) 
if iturbines==0 
    cp=0; 
    axial=0; 
else 
    syms a 
    expression=matlabFunction(4*a*(1-a)^2+(1-2*a)^3*powerCoefficient(iturbines-1)); 
    diff1=diff(expression,a); 
    solution=double(solve(diff1)); 
    axial=solution(find(solution >0 &solution<1)); 
    cp = expression(axial);  
end 
end 

我將不勝感激一些幫助。提前致謝!

回答

0

我認爲這應該工作,但不會是最優的關於加快等

[cp, axial] = powerCoefficient(nturbines, cp, axial) 

function [cp, axial]=powerCoefficient(iturbines, cp, axial) 
    if iturbines == 0 
     cp(end + 1) = 0; % or just (end) 
     axial(end + 1) = 0; % or just (end) 
    else 
     syms a 
     expression=matlabFunction(4*a*(1-a)^2+(1-2*a)^3*powerCoefficient(iturbines-1)); 
     diff1 = diff(expression, a); 
     solution = double(solve(diff1)); 
     axial(end + 1) = solution(find(solution > 0 & solution < 1)); 
     cp(end + 1) = expression(axial(end + 1);  
    end 
end 

而且它更容易,如果你在這裏使用的空間來讀出,且=)

+0

我說,沒有變量cp存在! – JPV

+0

@R_user:我更新了答案。記得在函數調用之前初始化'cp'和'axial'。 –

+0

是的,我把全局變量放到cp和軸上,它工作! – JPV