查看: 1771|回复: 1|关注: 0

[已答复] 函数之间的调用问题(应该):位置 1 处的索引超出数组边界(不能超出 1)。

[复制链接]

新手

17 麦片

财富积分


050


12

主题

33

帖子

0

最佳答案
  • 关注者: 1
发表于 2020-1-18 15:43:07 | 显示全部楼层 |阅读模式
function a = wxpt(p,t)
if (t>1073.15 && t<=2273.15)
    a=wxpt5(p,t);
end
if(t>=863.15 && t<1073.15)
    a=wxpt2(p,t);
end
if(t>=623.15 &&t <863.15)
    p23=0.34805185628969d3-1.1671859879975*t+0.0010192970039326d0*t^2;
    if (p>p23)
        v=vpt3(p,t);
        a=wxvt3(v,t);
    else
        a=wxpt2(p,t);
    end
end

if(T<623.15&&t>=273.15)
    ps=bhp(t);
    if(p>ps)
        a=wxpt1(p,t);
    else
        a=wxpt2(p,t);
    end
end

   
end


运行的时候出现标题上的问题,调试又调试不了(点运行调试没反应)。每一个子函数我的重新验证了一遍,没有问题,下面是其中一个子函数   


function a = wxpt5(p,t)              %%%  5区方程
e=[ -0.13179983674201e+02
    6.8540841634434d0
  -0.24805148934466e-01
  0.36901534980333d0
  -0.31161318213925e+01
  -0.32961626538917d0
  -0.12563183589592e-03
  0.21774678714571D-02
  -0.459428208999e-02
  -0.39724828359569D-5
  0.12919228289784D-06];
n=[0 0 0 0 0 0 1 1 1 2 3];
m=[0,1,-3,-2,-1,2,0,1,3,9,3];

c=461.526e-3;
p0=1.0d0;
t0=1000.0d0;
fpi=p/p0;
ftao=t0/t;
r=log(fpi);
rpi=1.0d0/fpi;
rtao=0.0d0;
rpi2=-1.0d0/fpi^2;
rtao2=0.0d0;
rpitao=0.0d0;
for i=1:1:11
dizeng=e(i)*fpi^n(i)*ftao^m(i);
r=r+dizeng;
rpi=rpi+dizeng*n(i)/fpi;
rtao=rtao+dizeng*m(i)/ftao;
rpi2=rpi2+dizeng*n(i)*(n(i)-1)/fpi^2;
rtao2=rtao2+dizeng*m(i)*(m(i)-1)/ftao^2;
rpitao=rpitao+dizeng*m(i)*n(i)/ftao/fpi;
end
g=r*c*t;% !吉布斯自由能
v=rpi*fpi*(c*1.0d3)*t/(p*1.0d6);% !比容
h=rtao*ftao*c*t ;%!比焓
s=(h-g)/t;% !比熵
cp=-ftao*ftao*rtao2*c;% !定压比热
u=c*t*(ftao*rtao-fpi*rpi);% !内能
cv=cp+c*(rpi-ftao*rpitao)^2/rpi2 ;%!定容比热
w=sqrt(1000.0d0*c*t*rpi^2/((rpi-ftao*rpitao)^2/(ftao^2*rtao2)-rpi2));% !声速
a=[p,h,s,cp,u,cv,w,v];
end


谢谢各位大哥!!!

论坛优秀回答者

3

主题

1034

帖子

202

最佳答案
  • 关注者: 44
发表于 2020-1-18 15:59:52 | 显示全部楼层
应该索引问题,位置 1 处的索引超出数组边界(不能超出 1)报错语句的变量只是一个数,或一维向量,但要索引到第二个第二维甚至更多所以报错,检查报错语句的变量,特别是第一个索引的变量,个人意见,仅供参考
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

快速回复 返回顶部 返回列表