我一直试图将for循环的输出写入向量。问题在于,一旦它通过等式,它就会停止并吐出这个错误:"下标索引必须是真正的正数 整数或逻辑。"
我已查看此错误是什么,并且我已检查过我的代码。输出没有负整数,也没有任何零。 for-loop,function和fzero命令都很好,如果我注释掉MW4p(y4,:) = MW4
我在命令窗口得到了所有的答案。我不能将它们放入数组中。
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);索引必须是a
正整数或逻辑。"所以我添加了一个冒号。将此命令放在for循环之外只是让它访问循环的最后一个值并返回相同的错误。
答案 0 :(得分:0)
错误消息告诉您确切需要知道的内容。 y4
不是整数。使用向量,矩阵,单元格或数组时,不能使用非整数编号进行索引。
向量,矩阵和数组是离散结构,只能用离散值索引,但显然它们可用于存储非离散值。
除非我遗漏了什么,否则你的选择是:
y4
及其对应的MW4
值作为元组;例如,您可能有一个结构或单元格数组,其中一个元素是y4
而另一个元素是从MW4
返回的数组