索引超出了数组元素的数量(4)。

24日视图(30天)
克雷格•约翰逊
克雷格•约翰逊 2023年5月2日23:46
编辑: 沃尔特·罗伯森 2023年5月22日18:47
函数[小卡,化学,r_c、mfuel mC02, ddt) = FourStrokeCycle (D, D, rpm、燃料、N)
AirMatrix = readmatrix (“AirProperties.xlsx”);
pa = 101325
Ta = 273
sa) = 3796
:cpi = AirMatrix (3)
:Mi = AirMatrix (2)
:外祖母= AirMatrix (1)
FuelMatrix = readmatrix (“FuelProperties.xlsx”);
ReactionMatrix = readmatrix (“ReactionRatios.xlsx”);
燃料=输入(”表明燃料类型:“,“年代”);
燃料~ =“汽油”燃料~ = &“汽油”燃料~ = &“柴油”燃料~ = &“柴油”
燃料=输入(”识别条目,表明燃料类型:“,“年代”);
结束
开关燃料
情况下{“汽油”,“汽油”}
Mf = FuelMatrix (1,1)
rhof = FuelMatrix (1、2)
大= FuelMatrix (1、3)
高频= FuelMatrix (1、4)
:如果= ReactionMatrix (1)
情况下{“柴油”,“柴油”}
Mf = FuelMatrix (2, 1)
rhof = FuelMatrix (2, 2)
大= FuelMatrix (2,3)
高频= FuelMatrix (2、4)
:如果= ReactionMatrix (2)
结束
%测试输入
rpm = 1500
d = .02点
N = 6
V0 = 0.00006
L = 0.1
D = 0.02
φi =π/ 6
PhiE =π/ 6
ω= rpm * 0.10472
%将rpmωrad / s
k =(1:1的N + 1):
PhiK = (k - 1) * (4 * pi) / N
tK = (k - 1) *(4 *π)/ (N *ω)
PhiT =ω。* tK
x = (D / 2) * cos PhiT +√(((4 * L ^ 2) / D ^ 2) sin (PhiT) ^ 2)。
Vt = V0 +(π* d ^ 2)。/ 4 . * (L + (d / 2) - x)
r_c = (V0 + D *(π* D ^ 2) / 4) / V0
小卡= 0 (N + 1)
P = 0 (N + 1)
T = 0 (N + 1)
P (1) = 101325
俄文= 8.3145
Mbar = Mi * nin(1) /祖母
R =俄文/ Mbar
m =外祖母。* Mi
μ= ((nin。* Mi) / m)。
n (1) = (P (1) * Vt (1)) / (R (1) * T (1))
v (1) = Vt (1) / m (1)
c_p =μ(1)* cpi
c_v = c_p-R
k = 1: N
如果PhiK (k) <π
P (k + 1) = P (k)
T (k + 1) = (k)
μμ(k + 1) = (k)
外祖母(k + 1) = nin (k)
n (k + 1) = n (k) * Vt (k + 1) / Vt (k)
m (k + 1) = m (k) * Vt (k + 1) / Vt (k)
v (k + 1) = Vt (k + 1) / m (k + 1)
elseifPhiK (k) < 2 *π-φi
外祖母(k + 1) = nin (k)
μμ(k + 1) = (k)
n (k + 1) = n (k)
m (k + 1) = m (k)
v (k + 1) = Vt (k + 1) / m (k + 1)
P (k + 1) = P (k) * (v (k) / v (k + 1)) ^ (c_p / c_v)
T (k + 1) = (P v (k + 1) * (k + 1) / R
elseifPhiK (k) > = 2 * pi-PhiI
如果n (k + 1) > = 0%误差线
CF = (1 + 10 * (rpm - 800) / 5200) * (r_c - 6.854)
mdot = CF / 1000
ndot = mdot / M
外祖母(k + 1) = nin (k) + ndot *如果* (tK (k + 1) tK (k))
指数超过数组元素的数量(4)。
错误在测试(第113行)
如果n (k + 1) > = 0
1评论
沃尔特·罗伯森
沃尔特·罗伯森 2023年5月2日23:58
我们没有您的数据,不知道答案输入()语句,所以我们不能测试你的代码。同样,你停止发布的 如果 elseif 链,所以代码是不完整的,所以我们不能创造我们自己的数据来测试。

登录置评。

答案(1)

Gokul Nath年代J
Gokul Nath年代J 2023年5月22日在8:06
嗨Carig,
看来你的代码的形式抛出一个错误是不正确的输入。从有限的信息,很明显的索引值n (k + 1) exeeding极限可以摄入。进一步注意到变量n只能拿4数组元素和你访问一个值是5。这可能是一个逻辑错误。请检查数组的结束条件通过使用函数和输入变量长度一旦验证通过。减少代码看起来是这样的。
lengthn =长度(n);
如果k + 1 < n
如果n (k + 1) > = 0
%的代码
结束
结束
与问候,
Gokul Nath年代

类别

找到更多的在循环和条件语句帮助中心文件交换

标签

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!