首页 > 解决方案 > 有没有一种方法可以重新计算 syms 变量并将其插入 Matlab 中的数组中?

问题描述

我必须计算管道系统的摩擦水头损失 hf,并且正在尝试编写一个简单的脚本。我正在使用 Colebrook-White & Darcy-Weisbach 方程在 for 循环中求解 hf 并希望将结果输入到数组中。

这是我到目前为止所做的:

%% Constants due to Rising main system
Hs = 17;        % m
D = 0.225;      % m
L = 1550;       % m
ks = 0.05/1000; % m
nu = 1.13e-6;   % m^2/s
Q = 0.08;       % m^3/s

%% Calculating hf for the system curve (DW)
Q_sys = [0:10:120];
hf_sys = zeros(1, length(Q_sys));
for i = 1:length(hf_sys)
    syms hf
    DW = Q_sys(i)==2*sqrt(2*9.81*D*hf/L)*log(ks/3.7/D+2.51*nu/D/sqrt(2*9.81*D*hf/L))*(pi*D^2/4);
    hf_sys(i) = vpasolve(DW, hf);
end
hf_sys % to display hf_sys

我的问题是执行后显示如下信息:

Unable to perform assignment because the left and right sides have a different number of elements.

Error in calcs (line 63)
    hf_sys(i) = vpasolve(DW, hf);

这是由于vpasolve(DW, hf)第二次迭代后的返回值为Empty sym: 0-by-1. 这就是我要解决的问题。

预期值为:

hf_sys = [5.5e-8, 0.481, 1.697, 3.585, 6.126, 9.308, 13.127, 17.579, 22.662, 28.374, 34.714, 41.681, 49.274];

标签: arraysmatlab

解决方案


推荐阅读