如果两个数组的声明

3视图(30天)
罗伯特Demyanovich
罗伯特Demyanovich 2021年6月21日
我编程的化学反应。我想确保产品生产的数量不超过可用的反应物的量(特别是反应物的量的赤字)。dS是产品生产的数量,cA的浓度,cB B的浓度,k1是速率常数,dt是第i个步骤的时间间隔。这是我迄今为止:
:dS (i + 1) = k1 * cA (i + 1:)。* cB * dt(我+ 1,);
如果:dS (i + 1) > cA(我+ 1)| cB(我+ 1,);
:dS (i + 1) = min (cA(我+ 1,),cB(我+ 1,);
结束
代码似乎产生正确的结果。但是有很多行和列在每个表,实际上对我来说很难检查每个单元中的结果。
如下的代码的意图。第一行第i个时间步计算dS。然后if语句检查以确保dS的计算值不超过限制反应物的量,这可能是一个或b。如果是这样,第三行代码替换值的细胞,这个overcalculation发生与cA的价值或cB取决于哪一个是反应物在赤字。
Overcalculation可能因为这是一个即时的酸和碱之间的反应。我会很感激如果有人能帮我验证这个代码匹配我的意图,即使这个代码不是最有效的。然而,建议更高效的代码肯定是受欢迎的
1评论
默罕默德·萨米
默罕默德·萨米 2021年6月22日
你的if语句可能不做你想做的事,如果条件是你使用的是一个数组,而不是一个标量值。

登录置评。

答案(1)

默罕默德·萨米
默罕默德·萨米 2021年6月22日
我不能评论化学工程方面。但是假设您的数据有多个列,你只是想取代列中的值的条件是正确的,你可以这样做。
:气孔导度= dS (i + 1) > cA(我+ 1)| dS (i + 1:) > cB(我+ 1,);
如果任何(电导率)
更换= min (cA(我+ 1,),cB(我+ 1,);
dS (i + 1,气孔导度)=替代(:,气孔导度);
结束
2的评论
默罕默德·萨米
默罕默德·萨米 2021年6月22日
你必须考虑到你比较一个数组而不是一个标量值。
如果(2 0 0 0 2)> (1 0 0 0 1)
disp真正的;
其他的
disp;
结束

登录置评。

类别

找到更多的在粒子和核物理帮助中心文件交换

标签

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!