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)
在 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)