将excel方程转换为matlab

时间:2016-02-03 19:10:09

标签: excel matlab if-statement excel-formula

我需要帮助将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)

2 个答案:

答案 0 :(得分:1)

如果您在Excel中有Ps(t)=IF(T(t)<Tp,P,0),那么在Matlab中可以这样做:

Ps = zeros(1, length(T));
Ps(T<Tp) = p;

其中T是向量。 这将读取,将Ps定义为与T具有相同长度的零数组。对于T的{​​{1}}索引,其中T(i)<Tp将Ps中的值设置为p。这是逻辑索引。

另一个表达:

=IF(F6>273.16,(IF(AND(AB5>0,Y6>0),MIN(Y6*3600/$AE$11,AB5),0)),0)

必须根据此等式在Excel中的运行方式进行分析。此公式是否沿同一列的行复制? 这个公式来自哪个细胞?

假设这是从单元格J6中获取的,然后在行中迭代我得到:

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

这可以通过矢量化版本进行改进,即使似乎有对不同行的引用(AE5,当所有内容都是关于第6行时)。

答案 1 :(得分:0)

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