我有两个目的相同的文件,一个在Python中,一个在MATLAB中。读入数据文件后,我希望它们计算和出错,使用detrend去除常量偏移,然后使用griddata插入表面以适应错误。
在解析我的Python文件中的数据时,我尝试将scipy.signal.detrend
与linear
和constant
参数类型一起使用,因为constant
最初没有工作。 (scipy.signal.detrend
的文档See
然而,这些方法都没有得到与MATLAB文件相同的数组err
,并且我确保到目前为止的所有其他方法都匹配。你能告诉我一种与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中与错误相匹配)
答案 0 :(得分:0)
我不确定是否有不同的scipy
/ matplotlib
函数来解决此问题,但与此同时,通过计算MATLAB文件中每列的平均值,平均值是接近0(在0.0001内)我认为我将简单地取Python文件中列的平均值,然后从列中的每个索引中减去该平均值。
但是,在将来,我仍然想知道一种不依赖于此的方法......