How to run function within for loop
1 回表示 (過去 30 日間)
古いコメントを表示
The code given below solves the delayed type differential equation. I want to run this code for >10,000 different combinations of
and
. That is,
and
;
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/209715/image.png)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/209716/image.png)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/209717/image.png)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/209718/image.png)
function [sol]=system_simulation
po=1.4; do=8; tau=0.5; xth=0.2; vth=0.2;ksi=0.25;
option=odeset('RelTol', 1e-4, 'AbsTol', 1e-4);
sol = dde23(@syst,[tau],@hystory,[0 100],option);
figure(1), plot(sol.x,sol.y(1,:));
% --------------------------------------------------------------------------
function s = hystory(t)
% Constant history function for inverted pendulum.
s = [0.4;0.1];
end
% --------------------------------------------------------------------------
function xprime = syst(t,x,Z)
xlag=Z(:,1);
xprime=zeros(2,1);
xprime(1)=x(2);
xprime(2)=x(1)-p*xlag(1)-d*xlag(2);
end
end
2 件のコメント
Geoff Hayes
2019 年 3 月 21 日
Mirlan - you want to iterate over po and do but nowhere do you reference them. How should they be used? (It is also doubtful you want to plot the results for all 10000 iterations so please discuss what you want to save/store from each iteration.
採用された回答
Jan
2019 年 3 月 22 日
編集済み: Jan
2019 年 3 月 22 日
I prefer providing parameters by anonymous functions instead of nested function. See Answers: Anonymous function for params . Then:
pv = 0.5:0.1:14;
dv = 0.5:0.1:14;
Result = cell(numel(pv), numel(dv));
ip = 0;
for p = pv
ip = ip + 1;
id = 0;
for d = dv
sol = dde23(@(t,x,Z) syst(t,x,Z, p, d), tau, ...
@hystory, [0, 100], option);
id = id + 1;
Result{ip, id} = sol.y(1,:);
end
end
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Delay Differential Equations についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!