将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语句。