一个可能很容易的问题,我出于某种原因看不到答案:
我正在开发一个Matlab项目,我需要插入一组特定的数据。 我有一个2D矩阵MAT和两个向量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这是数据的直观表示。顶部图片是插值结果,底部是输入数据。没有接近于零的值,正如您所知,图片远非相似。它看起来有点像正确的插值得到奇怪的拉伸或某种东西......
答案 0 :(得分:0)
你有一系列的1d插值问题 - 沿这些线插入强度值s。例如,首先旋转数据以使线与x轴对齐,然后让Matlab对散乱点(x_i,s_i)进行1d插值
答案 1 :(得分:0)
好吧,我明白了。出于某些奇怪的原因,它可以按预期工作
[y,x] = meshgrid(X,Y);
我仍在尝试了解坐标可能混淆的位置,但至少现在代码可以正常工作了。感谢那些试图帮助的人!