热线电话:13121318867

登录
2019-02-15 阅读量: 967
怎么使用for循环计算累积和

我试图在27层的模型字段中得出变量的总和。大多数变量适用于每一层,但对于其中一个变量我正在测量高度的变化,因此从给定层的总高度中减去前面的层“顶部高度”。

基本上,我只是不确定如何使用for循环表示任何点的累积和。

我正在尝试,根据我的代码,使用两个for循环来执行累积求和并获得错误。

"Attempted to access flheight(299,162,0,12); index must be a positive integer or logical."

我知道这是因为“flheight(299,162,0,12)”不存在,因为第三维没有“layer = 0”。

no2molcm2 = 0;

dh = 0;

patm = 0;

no2ppm = 0;

for n=0:26

for i=1:27

T = Temp(299,162,i,12); % K

dh = (flheight(299,162,i,12)*100) -flheight(299,162,n,12)*100;

patm = sum(Pres(299,162,i,12))*(1/101325); %atm

R = 82.06; % cm3*atm/(k*mol)

av = 6.022140857747*(10^23); % 1/mol

no2ppm = sum(no2(299,162,i,12));

no2molcm2 = cumsum(((no2ppm*av*patm)/(R*T))*dh);

end

end

我的问题是,我怎么能告诉matlab什么时候看到这个输入(或错误输出)只是将它设置为零?

解决办法:

因此,根据评论,我意识到我应该采取简单的方法并手动指定第一层,然后对剩余的那些进行求和。这是修复它的代码:

latco = 1;

lonco = 200;

layer1 = (no2(latco,lonco,1,12)*av*(Pres(latco,lonco,1,12)*

(1/101325)))/(R*Temp(latco,lonco,1,12)*h1);

for n=1:26

for i=2:27

T = Temp(latco,lonco,i,12); % K

dh1 = flheight(latco,lonco,i,12)*100;

dh2 = flheight(latco,lonco,n,12)*100;

dh = dh1 - dh2;

patm = sum(Pres(latco,lonco,i,12))*(1/101325); %atm

no2ppm = no2(latco,lonco,i,12);

no2molcm2_26 = sum(((no2ppm*av*patm)/(R*T))*dh);

end

end

no2final = layer1 + no2molcm2_26

0.0000
2
关注作者
收藏
评论(0)

发表评论

暂无数据
推荐帖子