2015-06-14 2 views
1

Я рисую одни и те же значения в python и в MATLAB (The data точно такой же).Сравните различия между изображениями MATLAB и python с одними и теми же данными

просто делает

import scipy.io as sio 
zzz = sio.loadmat(pathToData) 
plot(zzz['zzz'][:,0]) #python 

В MATLAB

plot(zzz)  %matlab 

Я пытаюсь получить matplotlib, чтобы создать изображение, которое выглядит так же, как MATLAB фигуры, как this example.

  • Следующие изображения, созданные с помощью захвата экрана, чтобы избежать любой последующей обработки изображения. Я убедился, что обе цифры одинакового размера. Затем я положил рядом друг с другом и создали ScreenCapture их обоих в то же время

Я также поставил линии один рядом с другим: enter image description here

enter image description here

Это немного сложно видеть, но изображение MATLAB намного более шумно, и похоже, что изображение python после скользящего среднего примерно такого (особенно в начале графика)

У вас есть любые советы как сделать вид на питон точно как у MATLAB?

(Я загрузил the data, если кто заинтересован в некоторых экспериментах)

EDIT

Я пытался сделать сглаженный = False, результаты немного лучше, но ширина линии не больше, независимо от того, насколько мал Я пытаюсь сделать это (original screencapture)

enter image description here

+0

Не могли бы вы включить полный код (включая загрузку файла мата в python)? Я уверен, что многие опытные программисты на python в противном случае пропустили бы этот вопрос, потому что они понятия не имеют, как обращаться с определенным форматом файлов в формате Matlab. – Daniel

+1

Предполагая, вы заявили, что фрагменты ** 'data' ** (' == zzz') ** одинаковы **, поэтому обработка данных - ** фаза ** - это точка, в которой следует начинать с , Однако **, если ** входы 'zzz' не совпадают для обработки MATLAB/python, проверьте, не генерировать ли данные ** фазу ** для любой разницы. Вы можете также разделить разницу между парой zzz-datapoints (одна из MATLAB - другой из источника данных python) **, чтобы получить более важные данные **, более читаемые, чем от наблюдения только изображений с увеличенным пикселированным GUI) – user3666197

+0

Может ли быть, что линия python просто толще? –

ответ

3

Я думаю, что это связано с тем, что Matplotlib при изготовлении фигуры используется anti aliasing. Однако, это свойство художника, который можно установить:

import matplotlib.pyplot as plt 
import numpy as np 

x = np.linspace(0, 2*np.pi, 500) 

plt.plot(x, np.sin(x), label='with anti-aliasing') 
plt.plot(x, np.cos(x), antialiased=False, label='without anti-aliasing') 
plt.legend() 
plt.show() 

Результат:

enter image description here

Увеличить в верхнем левом углу:

enter image description here

Итак, отключив фильтр сглаживания, вы можете получить очень похожие результаты для версии Matlab.

+0

Спасибо, thats help, но ширина линии по-прежнему различна .. – Oren

+0

Что касается ширины линии: вы указываете ширину линии в точках. Когда вы сохраняете его в png, полученная ширина линии зависит от значения dpi (точек на дюйм) вашей фигуры. – hitzg

+0

Я не сохраняю в png, я делаю screencapture (чтобы избежать пост-обработки изображения). это захват экрана двух фигур в то же время ... – Oren

Смежные вопросы