使用 Fzero 的间接方程的输出问题
Issue with output of an indirect equation using Fzero
我坚持尝试将 for 循环的输出写入向量。问题是,一旦它通过等式,它就会停止并吐出这个错误:“下标索引必须是正数
整数或逻辑值。”
我已经调查了这个错误是什么,并且我已经检查了我的代码。没有输出负整数,也没有任何零。 for 循环、函数和 fzero 命令都很好,如果我注释掉 MW4p(y4,:) = MW4
,我会在命令 window 上得到所有答案。我只是不能将它们放入数组中。
for y4 = linspace(1.4,1.67,100)
x0 = 12; %Starting Point
fun = @(MW4) (y4.*MW1.*T3)./(y1.*MW4.*T2) - ...
(((1+((y4+1)./(y4-1)).*p5p2).*((2.*y4)./(y4-1))) ./ ((1+...
((y1+1)./(y1-1)).*p5p2).*((2.*y1)./(y1-1)))) .* (((2./(y1-1))...
./ (2./(y4-1))).^2);
MW4 = fzero(fun,x0)
MW4p(y4,:) = MW4
end
哪里
y1 = 1.67;
MW1 = 39.55;
T3 = 250; %k
T2 = 700; %k
p5p2 = 2.307; %Determined from T5 desired
MW4p = ones(1,100);
在早期的尝试中,我曾尝试 MW4p(y4) = MW4
出现以下错误:“尝试访问 MW4p(1.4);索引必须是
正整数或逻辑。”所以我添加了一个冒号。将此命令放在 for 循环之外只是让它访问循环的最后一个值和 return 相同的错误。
错误消息准确地告诉了您需要知道的内容。 y4
是 不是 整数。使用向量、矩阵、元胞或数组时,您不能使用非整数进行索引。
向量、矩阵和数组是离散结构,只能用离散值进行索引,但显然它们可用于存储非离散值。
除非我遗漏了什么,否则你的选择是:
- 通过任何数据结构:将
y4
及其对应的MW4
值存储为元组;例如,您可能有一组结构或单元格,其中一个元素是 y4
,另一个元素是从 MW4
返回的数组
- 使用类似 this answer 的方法,使用散列映射。我没有仔细研究过,但我猜你可以使用浮点数作为键。
我坚持尝试将 for 循环的输出写入向量。问题是,一旦它通过等式,它就会停止并吐出这个错误:“下标索引必须是正数 整数或逻辑值。”
我已经调查了这个错误是什么,并且我已经检查了我的代码。没有输出负整数,也没有任何零。 for 循环、函数和 fzero 命令都很好,如果我注释掉 MW4p(y4,:) = MW4
,我会在命令 window 上得到所有答案。我只是不能将它们放入数组中。
for y4 = linspace(1.4,1.67,100)
x0 = 12; %Starting Point
fun = @(MW4) (y4.*MW1.*T3)./(y1.*MW4.*T2) - ...
(((1+((y4+1)./(y4-1)).*p5p2).*((2.*y4)./(y4-1))) ./ ((1+...
((y1+1)./(y1-1)).*p5p2).*((2.*y1)./(y1-1)))) .* (((2./(y1-1))...
./ (2./(y4-1))).^2);
MW4 = fzero(fun,x0)
MW4p(y4,:) = MW4
end
哪里
y1 = 1.67;
MW1 = 39.55;
T3 = 250; %k
T2 = 700; %k
p5p2 = 2.307; %Determined from T5 desired
MW4p = ones(1,100);
在早期的尝试中,我曾尝试 MW4p(y4) = MW4
出现以下错误:“尝试访问 MW4p(1.4);索引必须是
正整数或逻辑。”所以我添加了一个冒号。将此命令放在 for 循环之外只是让它访问循环的最后一个值和 return 相同的错误。
错误消息准确地告诉了您需要知道的内容。 y4
是 不是 整数。使用向量、矩阵、元胞或数组时,您不能使用非整数进行索引。
向量、矩阵和数组是离散结构,只能用离散值进行索引,但显然它们可用于存储非离散值。
除非我遗漏了什么,否则你的选择是:
- 通过任何数据结构:将
y4
及其对应的MW4
值存储为元组;例如,您可能有一组结构或单元格,其中一个元素是y4
,另一个元素是从MW4
返回的数组
- 使用类似 this answer 的方法,使用散列映射。我没有仔细研究过,但我猜你可以使用浮点数作为键。