是的,你可以。您可以在关键点之间进行插值。不过,这将需要一些技巧。盲目地使用任何 MATLAB 命令的插值将不起作用,因为它们需要独立轴(在您的情况下为 x-axis)增加。您目前无法对您的数据执行此操作……至少开箱即用。因此,您必须创建一个虚拟值列表,范围从 1 到 A1(或 A2,因为它们的大小都相同)中的元素数量,以创建一个独立的轴并插入 both 通过指定具有更精细间距的虚拟列表来独立排列。这种更精细的间距由您要在图中引入的新点的总数控制。这些点将在虚拟列表的范围内定义,但每个点之间的间距会随着您增加新点的总数而减小。作为一般规则,添加的点越多,间距就越小,因此绘图应该更平滑。完成后,将最终值绘制在一起。
这里有一些代码供您运行。我们将使用interp1 为我们和大部分工作执行插值。函数linspace 在虚拟列表中创建更精细的点网格以方便插值。 N 将是您想要绘制的所需点的总数。我现在将其设为 500,这意味着 500 个点将用于使用您的原始数据进行插值。通过增加(或减少)总点数进行实验,看看这对数据的平滑度有何影响。
我还将使用Piecewise Cubic Hermite Interpolating Polynomial 或pchip 作为插值方法,如果你想获得技术,这基本上是三次样条插值。假设 A1 和 A2 已经创建:
%// Specify number of interpolating points
N = 500;
%// Specify dummy list of points
D = 1 : numel(A1);
%// Generate finer grid of points
NN = linspace(1, numel(A1), N);
%// Interpolate each set of points independently
A1interp = interp1(D, A1, NN, 'pchip');
A2interp = interp1(D, A2, NN, 'pchip');
%// Plot the data
plot(A1interp, A2interp);
我现在得到以下信息: