使用Fzero输出间接方程的问题

时间:2015-07-08 15:20:04

标签: matlab for-loop iteration output

我一直试图将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循环之外只是让它访问循环的最后一个值并返回相同的错误。

1 个答案:

答案 0 :(得分:0)

错误消息告诉您确切需要知道的内容。 y4 不是整数。使用向量,矩阵,单元格或数组时,不能使用非整数编号进行索引。

向量,矩阵和数组是离散结构,只能用离散值索引,但显然它们可用于存储非离散值。

除非我遗漏了什么,否则你的选择是:

  • 通过任何数据结构:存储y4及其对应的MW4值作为元组;例如,您可能有一个结构或单元格数组,其中一个元素是y4而另一个元素是从MW4返回的数组
  • 使用哈希映射使用this answer之类的内容。我没有仔细研究过这个,但我的猜测是你可以用浮子作为关键。