插值数据失败:网格向量未定义与给定值匹配的点网格
Interpolating data fails: grid vectors do not define a grid of points that match the given values
我有一些 time/frequency 数据,我尝试使用 Matlab 的 interp2
函数对其进行插值。数据[F,T,data]
是从Matlab的一个不同的Matlab例程中得到的,spectrogram如果你感兴趣的话。
[~,F,T,data] = spectrogram(...)
data = 10*log10(data);
我可以使用 surf
绘制数据。数据没问题,我相信。然而,插入数据似乎是一个问题。即使使用 interp2(F,T,data,F,T)
(实际上没有插值)也会出现以下错误。
这里出了什么问题?
我有我在这里使用的数据:https://www.dropbox.com/s/zr5zpfhp6qyarzw/test.mat
interp2(F,T,data,f,t)
Error using griddedInterpolant
The grid vectors do not define a grid of points that match the given values.
Error in interp2>makegriddedinterp (line 228)
F = griddedInterpolant(varargin{:});
Error in interp2 (line 128)
F = makegriddedinterp({X, Y}, V, method,extrap);
>> size(F),size(T),size(data),size(f),size(t)
ans =
129 1
ans =
1 52
ans =
129 52
ans =
200 1
ans =
1 121
问题是你应该交换 F
和 T
:
interp2(T,F,data,t,f);
第一个参数对应矩阵的列,第二个参数对应记录的行 here:
If X and Y are grid vectors, then V must be a matrix containing
length(Y) rows and length(X) columns.
作为替代,您可以转置data
:
interp2(F,T,data',f,t);
(奇怪的)参数顺序背后的推理
interp2(X,Y,V,Xq,Yq)
被解释为 函数 的插值,由 矩阵 V 表示,即样本值。问题是 function/matrix 的 arguments/indexes 是以相反的顺序提供的:
matrix(row, column)
对比
function(x,y)
x
(第一个参数)通常表示水平轴,因此对应于 column
(第二个参数)参数和 y
和 row
的同义词。
我有一些 time/frequency 数据,我尝试使用 Matlab 的 interp2
函数对其进行插值。数据[F,T,data]
是从Matlab的一个不同的Matlab例程中得到的,spectrogram如果你感兴趣的话。
[~,F,T,data] = spectrogram(...)
data = 10*log10(data);
我可以使用 surf
绘制数据。数据没问题,我相信。然而,插入数据似乎是一个问题。即使使用 interp2(F,T,data,F,T)
(实际上没有插值)也会出现以下错误。
这里出了什么问题?
我有我在这里使用的数据:https://www.dropbox.com/s/zr5zpfhp6qyarzw/test.mat
interp2(F,T,data,f,t)
Error using griddedInterpolant
The grid vectors do not define a grid of points that match the given values.
Error in interp2>makegriddedinterp (line 228)
F = griddedInterpolant(varargin{:});
Error in interp2 (line 128)
F = makegriddedinterp({X, Y}, V, method,extrap);
>> size(F),size(T),size(data),size(f),size(t)
ans =
129 1
ans =
1 52
ans =
129 52
ans =
200 1
ans =
1 121
问题是你应该交换 F
和 T
:
interp2(T,F,data,t,f);
第一个参数对应矩阵的列,第二个参数对应记录的行 here:
If X and Y are grid vectors, then V must be a matrix containing length(Y) rows and length(X) columns.
作为替代,您可以转置data
:
interp2(F,T,data',f,t);
(奇怪的)参数顺序背后的推理
interp2(X,Y,V,Xq,Yq)
被解释为 函数 的插值,由 矩阵 V 表示,即样本值。问题是 function/matrix 的 arguments/indexes 是以相反的顺序提供的:
matrix(row, column)
对比
function(x,y)
x
(第一个参数)通常表示水平轴,因此对应于 column
(第二个参数)参数和 y
和 row
的同义词。