我需要帮助将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)
答案 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语句。