我有以下数据。第一行和第一列(突出显示)是两个参数,其中已生成其余元素。我希望将这个矩阵转换为50乘50的矩阵,在行和列之间插入数据。
我尝试按以下方式插入第二列,
x=[100 300 500 700];
y=[-20 -184 -315.2 -412];
z = linspace(x(1),x(4),50);
yi=interp1(x,y,z,'cubic');
但是,我的问题是,我无法弄清楚如何同时插入行并得到整个矩阵。
欢迎任何帮助/建议。
数据如下;
30 60 90
100 -20 -45 -80.5
300 -184 -215 -225.4
500 -315.2 -254 -339
700 -412 -419 -488
答案 0 :(得分:3)
您的数据是两个变量(f(x,y)
)的函数,因此您需要使用interp2
而不是interp1
。
% Populate the data that you already have
rows = [100, 300, 500 700];
cols = [30, 60, 90];
data = [-20 -45 -80.5
-184 -215 -225.4
-315.2 -254 -339
-412 -419 -488];
% Interpolate this at 100 points in each direction
[newcols, newrows] = meshgrid(linspace(cols(1), cols(end)), ...
linspace(rows(1), rows(end)));
% Perform the bicubic interpolation
newdata = interp2(cols, rows, data, newcols, newrows, 'bicubic')