鱼C论坛

 找回密码
 立即注册
查看: 1525|回复: 3

matlab的if语句条件不成立,但是依然会执行

[复制链接]
发表于 2023-12-16 22:56:51 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. Pl=npq+npv;
  2. Ql=npq;
  3. H=zeros(Pl);
  4. N=zeros(Pl,Ql);
  5. K=zeros(Ql,Pl);
  6. L=zeros(Ql);
  7. Va = angle(V);%电压相角
  8. Vm = abs(V);  % 电压幅值
  9. YG = real(Ybus);
  10. YB = imag(Ybus);
  11. pq=[2;3];pv=[4];
  12. row=0;%对H、N、K、L排序
  13. L_row=0;
  14. L_col=0;
  15. for i=[pv;pq]'
  16.     row=row+1;
  17.     col=0;
  18.     L_col=0;
  19.     for j=[pv;pq]'
  20.         col=col+1;
  21.         check=ismember(i,pq)&&ismember(j,pq);%如果i,j所对应的节点都属于pq节点,则返回1
  22.         
  23.         % disp(check);
  24.         if i~=j
  25.             H(row,col) = Vm(i)*Vm(j)*(YG(i,j)*sin(Va(i)-Va(j))-YB(i,j)*cos(Va(i)-Va(j)));
  26.             if check==1
  27.                 L_row=L_row+1;
  28.                 L_col=L_col+1;
  29.                 L(L_row,L_col)= H(row,col);
  30.                 % disp(L_row);
  31.             end
  32.         else
  33.             H(row,col)=-Q(i)+YB(i,i)*Vm(i)*Vm(i);  
  34.             if check==1
  35.                 L_row=L_row+1;
  36.                 L_col=L_col+1;
  37.                 L(L_row,L_col)= -Q(i)+YB(i,j)*Vm(i)*Vm(i);
  38.                 disp(L_row);
  39.             end
  40.         end
  41.     end
  42. end
复制代码

愁死我了,为啥会执行呀
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-12-16 22:57:06 | 显示全部楼层
在你的代码中,条件 `if check==1` 是判断 `check` 是否等于1,如果是的话就执行相应的语句。然而,问题出在了 `if check==1` 的判断条件上面。

在你的代码中,`check` 是通过 `ismember(i,pq)&&ismember(j,pq)` 计算得到的。如果 `i` 和 `j` 都属于 `pq` 节点,那么 `check` 将会是1,否则为0。然而,在你的代码中,`pq` 的赋值是空的,也就是说 `pq` 中没有任何元素。所以,当 `check=ismember(i,pq)&&ismember(j,pq)` 执行时,无论 `i` 和 `j` 的值如何,`check` 都将会是0。

因此,在执行 `if check==1` 的判断时,条件永远不成立,所以无论条件是否满足,相应的语句都会被执行。

解决这个问题的方法是,首先给 `pq` 赋上正确的值,然后再重新运行你的代码。例如,可以尝试将 `pq` 设置为一个包含一些节点的矩阵或向量,以使得 `ismember(i,pq)` 和 `ismember(j,pq)` 可以返回正确的结果。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 0 反对 1

使用道具 举报

 楼主| 发表于 2023-12-17 00:00:59 | 显示全部楼层
搞错了,不是这个的问题
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-12-17 00:01:05 | 显示全部楼层
倔强青铜铜 发表于 2023-12-17 00:00
搞错了,不是这个的问题

抱歉,我理解错了。请问你指的是哪一部分代码执行了而不该执行呢?可以提供更多的细节吗?

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-22 02:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表