2
如何将following MATLAB代码转换为Python? Here is my solution,但它不会产生相同的结果。例如,f
在MATLAB代码中似乎总是正面的,但在我的Python代码中,f
也会得到负值。f在MATLAB代码中似乎总是正面的,但在我的Python代码中,f也会得到负值
任何想法如何解决该方案?
大多数情况下,我很关注这些:
MATLAB:
for k = 1 : nx
j = k+2;
的Python:
for k in range(1,nx+1):
j = k+2
MATLAB:
[V,D] = eig(A, B);
DD = diag(D);
keep_idxs = find(~isinf(DD));
D = diag(DD(keep_idxs));
V = V(:, keep_idxs);
[lambda, idx] = min(diag(D));
f = V(:,idx);
的Python:
w,vr = scipy.linalg.decomp.eig(A,B)
w = w.real
vr = vr.real
w = w[2:-1-2]
lambda_ = w.min()
idx = w.argmin()
f = vr[:,idx]
MATLAB:
f = f(3:end-2);
[nf, nf_idx] = max(abs(f)); % L_infty norm
n2 = f(nf_idx); % normalize sign away, too
f = f ./ n2;
的Python:
f = f[2:-1-1]
nf = max(np.absolute(f))
nf_idx = np.absolute(f).argmax()
nf_idx = np.ma.argmax(f)
n2 = f[nf_idx]
f = f/n2
MATLAB:
xx = -kappa:h:kappa;
的Python:
xx = np.arange(-kappa, kappa+h, h)
那些与对方等同吗?如果他们是,那他们为什么不产生完全相同的结果?
您需要正确格式化您的代码,并更具体地了解您的问题。你在说什么? – Falmarri 2011-01-24 07:33:49
语法完全不同。在MATLAB中,索引从1开始,在Python中,它们从0开始。我想知道是否出现了会产生不同结果的错误。 – user569474 2011-01-24 08:10:41