私は、いくつかのデータのカラーマップを2Dマトリックス(リスト)にプロットするプロットユーティリティを含む、いくつかのMATLABコードをPythonに移植しました。 MATLABとPythonプロットユーティリティはかなり似ているので、私は少しの労力でそれらを非常に密接に視覚的に一致させることができます。- カラーマップにある - MATLABが低く、Pythonが高いですか?
私はここで使用しているテスト行列である:テストマトリックスと検査行列
X = [1 0 3;
4 5 6;
7 8 9];
figure(1);
imagesc(X);
colormap(hot);
colorbar;
のPythonと
X = [ 1 0 3 ]
[ 4 5 6 ]
[ 7 8 9 ]
MATLAB
import numpy as np
import matplotlib as plt
X = [ [1,0,3] , [4,5,6] , [7,8,9] ]
fig = []
fig.append(plt.figure(1))
plt.imshow(X, cmap='hot', interpolation='nearest', aspect='auto')
plt.colorbar()
fig[0].show()
私は私のデシベルテスト行列
Y = [ 0.0000 -Inf 4.7712 ]
[ 6.0206 6.9897 7.7815 ]
[ 8.4510 9.0309 9.5424 ]
デシベルテストマトリックスとMATLAB
Y = 10*log10(X)
figure(2);
imagesc(Y);
colormap(hot);
colorbar;
を与えるデシベル(各要素のlog10のを取り、10を掛ける)に変換するときに、この問題が来ます
パイソンdBの試験マトリックスと
Y = 10*np.log10(X)
fig.append(plt.figure(2))
plt.imshow(X, cmap='hot', interpolation='nearest', aspect='auto')
plt.colorbar()
fig[1].show()
トップミドル要素との契約は何ですか?これは-Infです。これは低い値とみなされます。 MATLABでは、配列に存在する最小値、この場合は0に設定されます。 -Infが0より小さいと、実際の値を使用するとスケーリングが破棄されるため、これは理にかなっています。
一方、Pythonはこの-Inf値を高い値として解釈し、配列9.5424の最高値に設定します。値が単なるInfであれば、これは私には完璧な意味があります。しかし、それは間違いなく、そうでなければならない。ここに矛盾があるのはなぜですか?他に影響を与えずに修正できますか?
EDIT:明らかに、-InfをすべてInfに置き換え、行列の最小値を求め、すべてのInfをminに置き換えることができます。しかし、私は大規模なデータセットを扱っているので、これを行い、元のデータをそのまま維持することは特に効率的ではありません。理想的には、作図ツールが無限の値をどのように解釈するかを変更する方法があります。
これがそうですPythonの問題、matlabに無関係。どちらの実装も、好きなように境界ケースを実装することは自由です。 matlabタグを削除することを検討してください。私はあなたの答えはすでに答えを与えると思う、またはあなたはPythonのソースコードを変更することがあります。 – m7913d
私は、サーバー上で処理され、プロットのための不必要な計算時間を追加するすべての巨大なデータセットのコピーを作成する必要がない方法を探しています。 – AlexanderJ93
Pythonはそれをカラーマップの最高の色としてプロットしているのですか、それともプロットしていないだけで、背景軸の色を見せることができますか? – gnovice