当循环变量是小数时,如何输出最终计算的变量值?也就是如何保存循环结束后的Topt和Xopt的值?

for n=0.01:0.02

for a=1:3
    Abs_raw=Absorbance_simuV5(Ts,Xs,S0);
  
    Tmin=500; Tmax=2000; Xstart=0.15;      
    flag_firstrun=true;   
    Xold=Xstart;   
    Xopt=Xold;
    options.TolX = 0.1;  count=0;   Resiset=zeros(30,1);


  S_error=S0.*(1+n*(rand(size(S0))-0.5));
  
    for i=1:30         
    [Topt,yy]=fminbnd(@fun_V5,Tmin,Tmax,options);
     Resiset(i)=yy;
    
    
           if(flag_firstrun)
           flag_firstrun=false;     
           else
                  if((abs(Xold-Xopt)<1.0E-3)&&(abs(Topt-Told)<1))
                      count=count+1;      
                  else                                 
                       count=0;
                  end
            end

Abs_test=Absorbance_simuV5(Topt,Xold,S_error);

Told=Topt; Xold=Xopt;
disp([i,count,Topt,Xopt]);

           if(count>3)               
               break;
           end
    
     end

tem(a,1)=Topt; concern(a,1)=Xopt;
end
A=[tem(:,1) concern(:,1)];

end

这个最简单的办法就是用一个空矩阵,不断循环追加数据到每一行:

% 这里我建议先设置一个空的矩阵A_store
A_store = [];
for n=0.01:0.02
    for a=1:3
        Abs_raw=Absorbance_simuV5(Ts,Xs,S0);
        Tmin=500; Tmax=2000; Xstart=0.15;
        flag_firstrun=true;
        Xold=Xstart;
        Xopt=Xold;
        options.TolX = 0.1;  count=0;   Resiset=zeros(30,1);
        
        S_error=S0.*(1+n*(rand(size(S0))-0.5));
        for i=1:30
            [Topt,yy]=fminbnd(@fun_V5,Tmin,Tmax,options);
            Resiset(i)=yy;
            
            if(flag_firstrun)
                flag_firstrun=false;
            else
                if((abs(Xold-Xopt)<1.0E-3)&&(abs(Topt-Told)<1))
                    count=count+1;
                else
                    count=0;
                end
            end
            Abs_test=Absorbance_simuV5(Topt,Xold,S_error);
            
            Told=Topt; Xold=Xopt;
            disp([i,count,Topt,Xopt]);
            A_store = [A_store; [i,count,Topt,Xopt]]; % 我把每次循环的数据放在A_store中可以去看
            if(count>3)
                break;
            end
        end
        % tem(a,1)=Topt; concern(a,1)=Xopt;
    end
    % A=[tem(:,1) concern(:,1)];
    
end

A_store(:,3:4) %A_store的第三列和第四列就是每次循环存储的Topt,Xopt