問題:如何將for迴圈每次運算結果(數據與圖形)都顯示出來 已回收

看板MATLAB作者 (foreverlong)時間14年前 (2011/06/17 22:21), 編輯推噓0(002)
留言2則, 2人參與, 最新討論串1/1
你好!想請問下列程式的寫法問題在哪?謝謝你! 想要的數據是要有i=1~4 fprintf的顯示(每次回圈的結果)與figure(1~4)四張圖 但程式執行後只顯示i=4的結果,前三次皆被覆蓋掉了,亦只有figure(4)一 張圖 要如何修改才能得到預期中的結果? (程式省略了方程式的code) clear clc close all global x i n=[0.1:0.1:0.4]; m=length(n); for i=1:m n0=n(i); options=optimset('display','none','TolFun',1e-4,'Tolx',1e-4); [z,favl,exitflag,output]=fminunc(@objfunone,n0,options); sumx0=x(1,1)+x(1,2)+x(1,3);%檢查最佳化後的ivp結果 x0=[x(1,1) x(1,2) x(1,3)];%檢查最佳化後的ivp結果 fprintf('n0=%6.4f\n',n0) fprintf('exitflag=%6.4f\n',exitflag) fprintf('求解初始值x1=%6.4f\n\t\tx2=%6.4f\n\t\tx3=%6.4f\n 初始值總和 =%6.4f\n',x0,sumx0) fprintf('最佳起始猜值x1=%6.4f\n',z) disp('理論上求解初始值x1=最佳起始猜值x1') end function obj=objfunone(n) global x i clc close all M=[1 0 0 0 1 0 0 0 0]; tspan=[0 20]; x0=[n 0.1 0.1];%for dae y0=[0.8 0.1];%for ode options=odeset('Mass',M); [t1,x]=ode15s(@fundae1,tspan,x0,options); [t2,y]=ode45(@funode1,tspan,y0); nx=length(t1);%計算x1cal %%%%%%%%%%%%%%%%%%%% %畫圖 x1=x(:,1); x2=x(:,2); x3=x(:,3);%dea solution y1=y(:,1); y2=y(:,2); y3=1-y1-y2;%ode solution figure(i) plot(t1,x1,t1,x2,t1,x3) legend('x1','x2','x3') hold on plot(t2,y1,'o',t2,y2,'o',t2,y3,'o')%ode solution 為點狀圖 hold off x1t=0.02893;%x1終點值 x1cal=x(nx,1);%x1計算比較值 obj=((x1t-x1cal)/x1t)^2; -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.128.119.66

06/18 01:01, , 1F
把function objfunone裡的clc和close all消掉看看
06/18 01:01, 1F

06/19 15:23, , 2F
成功了!!!真是太感動了!!! 謝謝你的幫忙~
06/19 15:23, 2F
文章代碼(AID): #1D-sBXGJ (MATLAB)