2011-01-24 4 views
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) 

それらは互いに同等ですか?彼らがそうであれば、なぜ彼らは全く同じ結果を生み出すのではないでしょうか?

+0

コードを正しく書式設定し、問題の詳細を特定する必要があります。あなたは何について話していますか? – Falmarri

+0

構文は全く異なります。 MATLABのインデックスは1から始まり、Pythonでは0から始まります。異なる結果を生成するエラーが発生したかどうかを知りたいと思います。 – user569474

+0

私は固有値問題を数値的に解こうとします。コードはMATLABにあり、Pythonに変換しようとしています。 – user569474

答えて

3

私はMathWorks社のMATLABについては知らないが、Python用のコード

for k in range(1,nx+1): 
    j = k+2 

j = nx+2 
と同じである。これは、あなたの主な問題ではありませんが、それは心配です。

+0

はい、私はMATLABでは、計算されるループの最後の値もj = nx + 2であると思います。 – user569474

関連する問題