变量参数名不唯一

      # Your code here
function FY()
#Data = readdlm("D:\\Julia\\IEEE4.txt")
#n=Data[1,1]
#zls=Data[1,2]
#zero=findall(iszero,Data[:,1])
#czl=Data[zero[1,1]+1:zero[2,1]-1,:]#纯支路之间,序号,i,j ,r,x,b/2
#duididaona=Data[zero[2,1]+1:zero[3,1]-1,:]#对地节点数,导纳
#T=Data[zero[3,1]+1:zero[4,1]-1,:]#变压器支路,序号,i,j ,r,x,k,k下,k上
B=zeros(n,n)
Y=zeros(n,n)
G=zeros(n,n)
R=size(czl,1)#返回zl矩阵(无变压器的矩阵)的行数,R=3(4节点)
for k=1:R
  i=czl[k,2]
  j=czl[k,3]
  r=czl[k,4]
  x=czl[k,5]
  b=czl[k,6]
  GIJ=r/(r*r+x*x)
  BIJ=-x/(r*r+x*x)
  G(i,j)=-GIJ
  B(i,j)=-BIJ
  G(j,i)=-GIJ
  B(j,i)=-BIJ
  G(i,i)=G(i,i)+GIJ
  B(i,i)=B(i,i)+BIJ+b
  G(j,j)=G(j,j)+GIJ
  B(j,j)=B(j,j)+BIJ+b
end
R=size(duididaona,1)#R是对地支路阵的行数,R=1
for k=1:R
  i=duididaona[k,1]#i=2
  bi=duididaona[k,2]#i=0
  B(i,i)=B(i,i)+bi
end
R=size(T,1)#T变压器矩阵,R为带变压器支路的行数
for k=1:R
  i1=T[k,2]
  j1=T[k,3]
  r1=T[k,4]
  x1=T[k,5]
  K0=T[k,6]
  GIJ=r1/(r1*r1+x1*x1);BIJ=-x1/(r1*r1+x1*x1)
  G(i1,j1)=-GIJ/K0
  G(j1,i1)=-GIJ/K0
  B(i1,j1)=-BIJ/K0
  B(j1,i1)=-BIJ/K0
  G(i1,i1)=G(i1,i1)+GIJ/K0/K0
  B(i1,i1)=B(i1,i1)+BIJ/K0/K0
  G(j1,j1)=G(j1,j1)+GIJ
  B(j1,j1)=B(j1,j1)+BIJ
end
Y=G+B*im
for b=1:n
  for c=1:n
          G(b,c)=real(Y(b,c));
          B(b,c)=imag(Y(b,c));
  end
end
println("G为")
println(G)
println("B为")
println(B)
YY=G+B*im
#G=sparse(G)#转化为稀疏矩阵,矩阵中所有0元素去除
#B=sparse(B)
#YY=sparse(YY)
println("Y为")
println(Y)
end
      ```
  #报错内容
ERROR: LoadError: syntax: function argument names not unique
#问题
变量参数名不唯一是什么意思?一个function只能输入一个变量?

你最前面注释上的代码可能是原因,把注释去掉,再运行看看


去掉运行后出现同样的错

搁这写matlab呢

B(i,i)=B(i,i)+bi

好像是数组索引
好歹看文档那 :rofl:

那应该改成这样吗:B[i,i]=B[i,i]+bi
报错应该会提示用,但是目前说是参数问题?

可能他的意思是, B(arg)是函数调用,但是没有这个函数

我记得之前说过,数组索引用,函数调用用(),估计您也没有阅读过中文文档。您要是喜欢用()进行数组索引,还是用matlab吧。或者看看有没有julia调用matlab的库。

我的错。索引和调用的概念可能都没弄懂,是不是涉及数组的都用,涉及函数的都用()?

其实就是数组用 [] 函数用 (), 建议通读中文文档

1 个赞

好的,谢谢指导 :blush: