Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab';s样条线在Python中的等价物,三个输入。_Python_Matlab_Numpy_Interpolation_Spline - Fatal编程技术网

Matlab';s样条线在Python中的等价物,三个输入。

Matlab';s样条线在Python中的等价物,三个输入。,python,matlab,numpy,interpolation,spline,Python,Matlab,Numpy,Interpolation,Spline,我正在将一个matlab脚本转换为python,这是一个障碍。 为了在信号上使用三次样条插值。脚本使用带有三个输入的命令样条线。f_o,c_信号和频率,所以它看起来如下 cav_sig_freq = spline(f_o, c_signal, freq) f_o = 1x264, c_signal = 1x264 and freq = 1x264 从matlab中的文档中可以看出,“s=样条曲线(x,y,xq)返回与xq中的查询点对应的插值向量s。s的值由x和y的三次样条曲线插值确定。” 在p

我正在将一个matlab脚本转换为python,这是一个障碍。 为了在信号上使用三次样条插值。脚本使用带有三个输入的命令样条线。f_o,c_信号和频率,所以它看起来如下

cav_sig_freq = spline(f_o, c_signal, freq)
f_o = 1x264, c_signal = 1x264 and freq = 1x264
从matlab中的文档中可以看出,“s=样条曲线(x,y,xq)返回与xq中的查询点对应的插值向量s。s的值由x和y的三次样条曲线插值确定。”

在python中,我正在努力找到正确的python等价物。我在numpy和Scipy文档中找到了许多不同的插值函数,让我们使用第三个输入,就像在Matlab中一样


感谢您抽出时间阅读此文章。如果有任何建议,我可以让它更清楚,我很乐意这样做

您在scipy.interpolate中尝试过InterpolatedUnivariateSpline吗?如果我正确理解了MatLab部分,那么我认为这是可行的

import numpy as np
from scipy.interpolate import InterpolatedUnivariateSpline as ius

a = [1,2,3,4,5,6]
b = [r * 2 for r in a]
c = ius(a, b, k=1)

# what values do you want to query?
targets = [3.4, 2.789]

interpolated_values = c(targets)

这似乎比MatLab提供的代码多了一步,但我认为这是您想要的。

基本上,您首先需要生成类似插值函数的内容,然后给出您的观点。使用以下变量名:

from scipy import interpolate
tck = interpolate.splrep(f_o, c_signal, s=0)
然后将此tck应用于您的要点:

c_interp = interpolate.splev(freq, tck, der=0)

关于这方面的更多信息,请阅读。

谢谢,我认为它需要像matlab中那样的单个操作,因此没有像我应该读的那样读文档。但是interpolation.splev给出了以下错误:第515行,在splrep raise_iermess[ier][1](_iermess[ier][0])ValueError:输入数据错误感谢您的回复,我已经尝试过了。但是,由于某些原因,它只会导致在第二步中使用“nan”填充数组。