gpt4 book ai didi

c - 为什么 IF 语句被侵权,而输出结果却明确表示应该执行它?

转载 作者:行者123 更新时间:2023-11-30 21:06:17 25 4
gpt4 key购买 nike

上下文:我正在使用 Matlab/Simulink 来模拟我需要的电路 follow a reference 。为了简化它:低于引用电流,然后施加更大的电流,高于引用电流,然后施加更少的电流。为了实现这一点,我必须控制 two devices (Sa 和 Sb)基本上以 1 在我的代码中结束并以 0 开始(两者同时)。

现在,我有 these results其中重要的图表是 S1 Current、S-Function/2 和 S-Function/1,最后一个问题:考虑到以下代码,为什么 S-Function/2(即 THY[])会保持在 1,而显然S-Function/1(即 IGBT[])有时会变为 0?

  • 下一个代码位于我在 Simulink 中使用的 S-Function 内。 This is the entire code

    for (i=0; i<width; i++){
    if (*Is[i] < *Iref[i]){
    //IGBT[] is S-Function/1 and THY[] is S-Function/2
    //Is[] is S1 Current and Iref[] is Reference Current 1
    IGBT[i] = 1.0;

    if ( IGBT[i] == 0.0){
    THY[i] = 0.0;
    }
    else {
    THY[i] = 1.0;
    }
    }
    else {
    IGBT[i] = 0.0;
    }
    }

最佳答案

我不确定,但我认为代码有问题:

for (i=0; i<width; i++){
if (*Is[i] < *Iref[i]){
//IGBT[] is S-Function/1 and THY[] is S-Function/2
//Is[] is S1 Current and Iref[] is Reference Current 1
IGBT[i] = 1.0;

if ( IGBT[i] == 0.0){ // condition 1
// if condition 1 is true then execute this
THY[i] = 0.0;
}
else {
// if condition 1 is false then execute this
THY[i] = 1.0;
}
}
else {
// this condition will never be executed
IGBT[i] = 0.0;
}
}

现在,如果条件 1 为 true,则将执行 THY[I] = 0.0;,如果条件为 false,则执行 THY[i] = 1.0;。在您的代码中

 else {
IGBT[i] = 0.0;
}

是一种死代码,永远不会被执行。您需要将 else 后跟 if 条件替换为 else if(condition),以便执行第二个 else。

还有一件事

IGBT[i] = 1.0; // IGBT[i] is updated

if ( IGBT[i] == 0.0){ // IGBT[i] is compared ... wow

我建议您阅读有关 float 和 double 之间的比较的内容。

关于c - 为什么 IF 语句被侵权,而输出结果却明确表示应该执行它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49744000/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com