在电控中,如果使用了中点平移法SVPWM,我们就需要判断三个数中的最大值及最小值,如果用if-else,那么程序代码就很长且效率不高,这里我介绍一种使用三目运算符的方法,代码简洁。
uvw_min = u < v ? u < w ? u : w : v < w ? v : w;
上面的式子是个三目运算符的多次嵌套,我们按照结合律性对其进行分解,最终可以得出:
uvw_min = u < v ? (u < w ? u : w) : (v < w ? v : w);
对上面的式子进行分析,如果(u < v)&&( u < w),则uvw_min = u;如果(u >= v)&&( v < w),则uvw_min = v;如果(u < v)&&( u >= w),则uvw_min = w;如果(u >= v)&&( v >= w),则uvw_min = w。最终可以将三个数中的最小值给算出来。
那么如何求三个数中的最大值呢?下面直接给出公式。
uvw_max = u > v ? u > w ? u : w : v > w ? v : w;
对上面进行化简得:
uvw_max = u > v ? (u > w ? u : w) : (v > w ? v : w);
对上面的式子进行分析,如果(u > v)&&( u > w),则uvw_max = u;如果(u <= v)&&( v > w),则uvw_max = v;如果(u > v)&&( u <= w),则uvw_max = w;如果(u <= v)&&( v <= w),则uvw_max = w。最终可以将三个数中的最大值给算出来。