Matlab如何将for循环的每次循环结果保存到一个矩阵!

简化的程序大致如下。应用的vpasolve函数,里面p和u是内层和外层循环,但是运行后只得到最后一次的结果。每一次循环得到的满足条件的解的个数不同,可能是1个,2个 等,那么如何把循环得到的所有结果放到一个矩阵或者将循环得到的相同个数解分别放在对应矩阵里呢(例如:3个解的跟3个解放在一个矩阵)

%目的是求出满足条件的x1,x2,x3
{syms x1 x2 x3
for p=0:1:50;
 for u=0:1:5000;

A=(x2/(x2+1))*(3-x2/1000)*(1-x3/1000);
g=p/2+50*(x2/(x2+100));
D= p*23+40*(x2/(x2+2500));
eq1=A-p;
eq2=p*(u-x2)-x1*g;
eq3=x1*A-p*x3;
[x1,x2,x3]=vpasolve(eq1,eq2,eq3,[x1,x2,x3],[10 50;0 1000;0 1000])
end
end
}

matlab2016a


求大家指点



这样做,最后的T就是你需要的

%目的是求出满足条件的x1,x2,x3
syms x1 x2 x3
parr = 0:1:500;
uarr = 0:1:5000;
solveArr = zeros(numel(parr)*numel(uarr), 3);
ct = 0;
for p=parr
    for u=uarr
        A=(x2/(x2+1))*(3-x2/1000)*(1-x3/1000);
        g=p/2+50*(x2/(x2+100));
        D= p*23+40*(x2/(x2+2500));
        eq1=A-p;
        eq2=p*(u-x2)-x1*g;
        eq3=x1*A-p*x3;
        [x1s,x2s,x3s]=vpasolve(eq1,eq2,eq3,[x1,x2,x3],[10 50;0 1000;0 1000]);
        ct = ct + 1;
        solveArr(ct,:) = eval([x1s, x2s, x3s]);
    end
end
T = array2table(solveArr, 'variablenames', {'x1','x2','x3'});

% 动态矩阵追加方式之一
A = [];
for ii = 1: 10
A = [A; rand(1,2)]; %每次追加一行
end

内层循环中用变量来储存x1等解的值,如:
X1(ii,jj) = x1; % ii为外层循环次数,jj为内层循环次数

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632