for 循环中的下标赋值维度与从 1x1 输入输出 2x1 的求解函数不匹配

Subscripted assignment dimension mismatch in for loop with solve function outputting 2x1 from 1x1 inputs

在 MATLAB 中,我正在尝试 运行 求解二次方程的迭代求解函数。每次迭代作为 1x6 数组中的 1x1 矩阵进入循环,但是 for 循环想要将 2x1 答案硬塞进分配的 1x1 space。

我研究过细胞和结构,但无济于事。如果取消 for 循环并单独求解每个函数,则该方程式有效,但目标是扩大此 for 循环以搅动不仅仅是一个 1x6 数组。这是我的代码。

    Es=200E3;        %MPa
    Ys=448;          %MPa
    D=168.3;         %mm
    wall=7.11;       %mm
    Pdesign=27.25;
    Ec=23800;
    strainc=.003;
    ts=7.11-7.11*.8;

    Plive=[5.45 8.18 10.90 13.63 16.35 19.08];
    syms trepair;

    for ii=1:1:length(Plive)

        test(ii)=solve(strainc==(Pdesign*D)/(2*Ec*trepair)-Ys*ts/(Ec*trepair)-Plive(ii)*D/(2*(Ec*trepair+Es*ts))); 

    end

提前感谢大家的意见。

结果是 2x1 数组,因此您需要将它们分配给 2x1 数组,而不是 1x1 数组。将 test(ii) 替换为 test(2*ii-1:(2*ii))

或者,使用 PLive 作为符号变量求解,然后使用 matlabFunction 获得您想要的任何值的解决方案:

Plive=[5.45 8.18 10.90 13.63 16.35 19.08];
syms trepair Pl
T=matlabFunction(solve(strainc==(Pdesign*D)/(2*Ec*trepair)-Ys*ts/(Ec*trepair)-Pl*D/(2*(Ec*trepair+Es*ts)),trepair));    
T(Plive)