GECKO3 protocol.m 文件运行错误:逻辑索引超出数组边界及解决方法
在 GECKO3 的 protocol.m 文件运行过程中,出现 [mappedFlux, enzUsageFlux, usageEnz] = mapRxnsToConv(ecModel, modelY, solEC.x); 位置 1 处的逻辑索引包含一个在数组边界之外的 true 值。 出错 mapRxnsToConv (第 29 行) fluxes(revRxns,:) = -fluxes(revRxns,:); 的出错提示,该如何解决?
解决方法
1. 添加检查条件 在代码中添加检查条件可以避免出现逻辑索引包含数组边界之外的 true 值的情况。可以在位置 1 处添加如下代码:
if any(logicalIndex > size(modelY,1))
logicalIndex(logicalIndex > size(modelY,1)) = [];
end
这段代码将逻辑索引中超出 modelY 数组边界的 true 值删除。
2. 检查 revRxns 数组边界
关于 fluxes(revRxns,:) = -fluxes(revRxns,:); 的出错提示,可能是因为 revRxns 数组中包含了超出 fluxes 数组边界的索引。可以在该语句前添加如下代码进行检查:
if any(revRxns > size(fluxes,1))
revRxns(revRxns > size(fluxes,1)) = [];
end
这段代码将 revRxns 数组中超出 fluxes 数组边界的索引删除。
总结 通过添加检查条件,可以有效避免逻辑索引超出数组边界的问题,提高代码的稳定性和可靠性。
原文地址: https://www.cveoy.top/t/topic/nm4G 著作权归作者所有。请勿转载和采集!