Python与Matlab求解S参数误差校正方程组结果不同,Python代码是否有误?
S参数误差校正:方程组求解的Python代码问题
我正在做S参数误差校正的相关工作,需要通过三个方程组求解a、b、c三个值,相关的方程组示意图如下:
我用Matlab实现的代码及结果
先给大家看看我用Matlab写的代码,这个版本的结果是我预期的参考:
syms a b c eqn1 = (G_A1*a)+(b)-(G_A1*G_M1*c) == G_M1; %short eqn2 = (G_A2*a)+(b)-(G_A2*G_M2*c) == G_M2; %load eqn3 = (G_A3*a)+(b)-(G_A3*G_M3*c) == G_M3; %open %[A,B] = equationsToMatrix([eq1, eq2, eq3], [a, b, c]); %res = linsolve(A,B); sol = solve([eqn1, eqn2, eq3], [a, b, c]); aSol = sol.a; bSol = sol.b; cSol = sol.c;
运行后得到的结果:
- a的解:
4.9284 - 2.8505i - b的解:
-11.1951 -37.7373i - c的解:
-31.2705 -64.5481i
我用Python实现的代码及结果
之后我用Python尝试同样的求解,代码如下:
import numpy as np a = np.array([[G_A1,G_A2,G_A3], [1,1,1], [(-G_A1*G_M1),(-G_A2*G_M2),(-G_A3*G_M3)]]) b = np.array([G_M1,G_M2,G_M3]) x = np.linalg.solve(a, b)
但得到的结果和Matlab完全不一样:
- 第一个值(对应a):
-0.24421332 -0.021397452j - 第二个值(对应b):
-10.1681071 -37.679968ej - 第三个值(对应c):
-0.77652264 -0.0377357202j
我的疑问
明显两个工具的结果差异很大,我怀疑是Python代码里的矩阵构造出了问题,想请教大家:上述Python代码是否存在错误?
内容的提问来源于stack exchange,提问作者C Vith
相关产品推荐
相关产品推荐

