对包含比较符号的下式的解释

1视图(过去30天)
我比较一下无法得出这些方程。
gbLoss=(fdTrq>0&gbEff>eps)。*(1-gbEff)。*fdTrq./(gbEff.*gbSpRatio)...
+(fdTrq>0&gbEff==eps)。*fdTrq.*gbSpRatio...
+ (fdTrq<=0) .* (1-gbEff) .* fdTrq ./ gbSpRatio;
vehForce = (wheelSpd~=0) .* (rolling_friction + veh.aero_coeff.*w{1}. * (wheelSpd~=0) .* (rolling_friction + veh.aero_coeff.*w{1}.)^ 2 + veh.mass。* w {2});
车轮转矩(Nm)
wheelTrq = (vehForce .* veh.)wh_radius +阿明费。axle_loss。* (wheelSpd ~ = 0));
发动机提供的扭矩
engTrq = (shaftSpd > 0) * (reqTrq > 0)。* (1 u{2})。* reqTrq;
brakeTrq = (shaftSpd > 0) * (reqTrq < = 0) * (1 u{2})。* reqTrq;
%电动机提供的转矩
emTrq = (shaftSpd>0) .* u{2} .* reqTrq;
3评论

登录评论。

接受的答案

沃尔特·罗伯森
沃尔特·罗伯森 2021年9月6日
编辑:沃尔特·罗伯森 2021年9月6日
当您处理数值时,比较操作符将返回逻辑假或逻辑真。在大多数情况下,逻辑false会将0.0加倍,而在大多数情况下,逻辑true会将1.0加倍。因此你可以实现
%result = VALUE1如果条件为2,则VALUE2如果条件为2,否则为0
result = piecwise (CONDITION1, VALUE1, CONDITION2, VALUE2, 0)
作为
(条件1)。*(值1)+(条件1)。*(条件2)。*(值2)
在条件互斥的情况下,这通常可以简化为
(条件1)。*(值1)+(条件2)。*(值2)
但是,您必须注意,对于未选择的情况,值永远不会变为无穷大
(x ~= 0) .* (1/x) + (x == 0) .* (x ~= 0
用1表示x==0,用1/x表示其他x。这是因为如果你这样写,那么在0时你会得到(x~=0)。*(1/0)这将是0(假)*无穷大,这将给出该项的NaN,而不是0。

更多的答案(0)

标签

社区寻宝

在MATLAB中心找到宝藏,并发现社区如何可以帮助你!

开始打猎吧!

翻译的