将excel公式转换为matlab
我需要帮助将excel公式转换为matlab。
我已经在excel中编译了一个简单的if语句,例如:
Ps(t)=IF(T(t)<Tp,P,0)
进入matlab如下:
if Ps(t)=T(t)<Tp; p; 0; end
它是否正确? 如果是的话,我该如何翻译一个更复杂的Excel方程,如:
=IF(F6>273.16,(IF(AND(AB5>0,Y6>0),MIN(Y6*3600/$AE$11,AB5),0)),0)
如果你在Excel中有Ps(t)=IF(T(t)<Tp,P,0)
,那么在Matlab中你可以这样做:
Ps = zeros(1, length(T)); Ps(T<Tp) = p;
其中T是一个向量。 这读取,将Ps
定义为与T
具有相同长度的零的数组。 对于那些T(i)<Tp
索引,把Ps设置为p
。 这是逻辑索引。
另一个expression:
=IF(F6>273.16,(IF(AND(AB5>0,Y6>0),MIN(Y6*3600/$AE$11,AB5),0)),0)
必须根据这个方程在Excel中的运行方式进行分析。 这个公式是沿同一列的行复制的吗? 这个公式来自哪个单元格?
假设这是从单元格J6中获取的,然后遍历行i,得到:
AE11 = 100; %this is the constant from cell AE11 for i= 2:length(F) if F(i) > 273.16 if AB(i) > 0 & Y(i) >0; J(i) = min( Y(i)*3600/ AE11 ,AB(i-1)); else J(i) = 0; end else J(i) = 0; end end
这可以通过vector化版本得到改进,即使似乎有一个不同的行(AE5,当一切都是关于第6行)的引用。
=IF(M5>$AD$17,$AD$5+$AD$8,IF(N5>0,$AD$5+(O4-$AD$5)*EXP((IF(F5>273.16,$AD$11,$AD$14))*0.04167),0))
这个excel等式如何转换为matlab? 我很不清楚如何处理最后嵌套的If语句。