У меня есть два файла с той же целью, один в Python и один в MATLAB.После прочтения файла данных я хочу, чтобы они вычислили ошибки и использовали detrend для удаления постоянного смещения, а затем интерполировали поверхность, чтобы соответствовать ошибкам, используя griddata.
При разыменовании данных в моем файле Python я пытался использовать scipy.signal.detrend
с обоими типами аргументов linear
и constant
, поскольку constant
изначально не работал.( См. для документации scipy.signal.detrend
)
Однако ни один из этих методов не получает тот же массив err
, что и файл MATLAB, и я гарантировал, что все остальное до этого момента имелосоответствует.Можете ли вы сказать мне другой способ убывания тренда, как это делает MATLAB?
Код Python (за исключением заголовка / импорта):
timestamp = datetime.datetime.today().strftime('%Y%m%d%H%M')
print timestamp
plt.rc('xtick', labelsize=5)
plt.rc('ytick', labelsize=5)
plt.rc('grid', ls='dotted')
plt.rcParams['lines.dotted_pattern'] = [0.1,0.5]
np.set_printoptions(suppress=True)
def main(argv):
testdir = argv[0] # if list indexing error --> you must input a file name after <python es15302_squareness.py> in the command line
fname = os.path.join(testdir,'OUTDATA.DAT')
s = np.loadtxt(fname) #If in current directory
s2 = np.transpose([s[:,0],s[:,2]]) # these are
s3 = np.transpose([-s[:,1],s[:,3]]) # all going
posEncUm = np.divide(s2,25000) # to be
posLasUm = np.divide(s3,25000) # 169x2
err = posEncUm - posLasUm;
# -------------------------Everything good up to here----------------------
err[:,0] = scipy.signal.detrend(err[:,0], type=='constant')
err[:,1] = scipy.signal.detrend(err[:,1], type=='constant')
print err
Код Matlab:
function ES15302_squareness(myDir)
close all;
cd(myDir);
s = load('outdata.dat');
posEncUm = [s(:,1) s(:,3)]/25000;
posLasUm = [-s(:,2) s(:,4)]/25000;
err = posEncUm - posLasUm;
err(:,1) = detrend(err(:,1),'constant');
err(:,2) = detrend(err(:,2),'constant');
(У меня нет ошибок, просто ошибка в MATLAB не совпадает с ошибкой в Python после отклонений)