Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.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 插值会产生奇怪的结果_Matlab_2d_Interpolation - Fatal编程技术网

Matlab 插值会产生奇怪的结果

Matlab 插值会产生奇怪的结果,matlab,2d,interpolation,Matlab,2d,Interpolation,一个可能很简单的问题,出于某种原因,我看不到答案: 我正在从事一个Matlab项目,我需要插值一组特定的数据。 我有一个2D矩阵矩阵和两个向量X和Y,它们为每一列和每一行指定一个值(当然是严格单调递增的)。矩阵大部分是0,除了一些对角线,其中有非零值 我现在希望沿着这条线在整个区域内插值数据,现在线性插值就足够了。我的方法是 [y,x] = meshgrid(Y,X); %Create a Meshgrid out of the grid vectors ySave=y;xSave=x; M =

一个可能很简单的问题,出于某种原因,我看不到答案:

我正在从事一个Matlab项目,我需要插值一组特定的数据。 我有一个2D矩阵矩阵和两个向量X和Y,它们为每一列和每一行指定一个值(当然是严格单调递增的)。矩阵大部分是0,除了一些对角线,其中有非零值

我现在希望沿着这条线在整个区域内插值数据,现在线性插值就足够了。我的方法是

[y,x] = meshgrid(Y,X); %Create a Meshgrid out of the grid vectors
ySave=y;xSave=x;
M = MAT;
%Now, we eliminate the Elements where MAT is 0 since we want to interpolate there
y(MAT==0)=[];
x(MAT==0)=[];
M(MAT==0)=[];
interpolant = scatteredInterpolant(y',x',M'); % and we create our Interpolant
result = interpolant(ySave,xSave);
然而,当我执行这段代码时,插值后的图片不仅与“直观的”插值完全不同——它甚至没有包含原始数据点。。。我做错了什么

谢谢你的帮助

根据注释进行编辑,以获得可见性:
imgur.com/a/7baxM这是数据的可视化表示。顶部图片是插值结果,底部图片是输入数据。没有接近于零的值,正如您所知,图片远非相似。这看起来有点像正确的插值被奇怪地拉伸了或者什么…

你有一系列1d插值问题——沿着这些线插值强度值。例如,首先旋转数据,使直线与x轴对齐,然后让Matlab在散射点(x_i,s_i)上进行1d插值。

好的,我算出来了。出于某种奇怪的原因,它与预期的

[y,x] = meshgrid(X,Y);

我仍在试图理解坐标在哪里可能会混淆,但至少现在代码可以工作了。感谢那些试图帮忙的人

看不到您的数据很难说-但是如果您将
结果
与用于创建插入剂的
M
进行比较,这两个是否(几乎)相同?另外,您是否使用了
plot3
来检查您输入的
x,y,M
是否符合您的预期-您在
M
中没有任何非常接近但不是零的值,或者类似的值?这是数据的可视化表示。顶部图片是插值结果,底部图片是输入数据。没有接近于零的值,正如您所知,图片远非相似。它看起来有点像正确的插值被奇怪地拉伸了或者其他什么…很遗憾,这不是我想要做的,我想插值线之间的空间。或者你的意思是我应该沿着与我所拥有的线正交的线插值?