2014-11-21 87 views
-2

将以下数据插值到区间∈[-2 4.9]中的平滑曲线。在同一图上画出实际数据和插值曲线。插值曲线

x| -2 -1.7 -1.4 -1.1 -0.8 -0.5 -0.2 0.1 0.4 0.7 1 1.3 
y| 0.1029 0.1174 0.1316 0.1448 0.1566 0.1662 0.1733 0.1775 0.1785 0.1764 0.1711 0.1630 

x| 1.6 1.9 2.2 2.5 2.8 3.1 3.4 3.7 4 4.3 4.6 4.9 
y| 0.1526 0.1402 0.1266 0.1122 0.0977 0.0835 0.0702 0.0579 0.0469 0.0373 0.0291 0.0224 

我当前的代码是...但是我无法做实际的插补曲线,这将有助于把这个数据到Excel表格中?第一次处理这个。

close all 
clear all 
clc 

x = [-2, -1.7, -1.4, -1.1, -0.8, -0.5, -0.2, 0.1, 0.4, 0.7, 1, 1.3, 1.6, 1.9, 2.2, 2.5, 2.8, 3.1, 3.4, 3.7, 4, 4.3, 4.6, 4.9]; 
y = [0.1029, 0.1174, 0.1316, 0.1448, 0.1566, 0.1662, 0.1733, 0.1775, 0.1785, 0.1764, 0.1711, 0.1630, 0.1526, 0.1402, 0.1266, 0.1122, 0.0977, 0.0835, 0.0702, 0.0579, 0.0469, 0.0373, 0.0291, 0.0224]; 
plot(x,y) 
+3

所以你还没有做任何事情,并希望我们为你做这个家庭作业问题?谷歌搜索“matlab插值”将其作为第一个结果:https://au.mathworks.com/help/matlab/ref/interp1.html。 Stackoverflow是针对您在重新研究自己*后遇到的编程问题。 – David 2014-11-21 00:32:28

+0

你真的认为我没有研究它,我看了我的教科书和在线,这是我唯一的度假胜地,甚至连我的同学都没有任何想法。不要指责我任何事情。我所要求的只是一些指导而非指责。 – 2014-11-21 00:35:55

+0

如果您正在尝试使用Matlab进行某些操作并且被卡住,那么第一步应该几乎总是针对Google“Matlab”以及您正在尝试执行的操作。 – David 2014-11-21 00:37:17

回答

0

This post that I just recently answered几乎可以解决您的问题。但是,我会抛出一块骨头帮助你。使用interp1为你做这个插值。你所做的是你指定(x,y)控制点,这些点是你的数据集的一部分,然后你指定一个点的其他x点,其中有更多的粒度和价值之间的原始值x值最初指定的,你可以看到输出是什么。

这里有你需要执行要做到这一点插的步骤:

  1. 定义您(x,y)点(这是你已经做了什么)。
  2. 定义一个网格x与您拥有的网格相比,网格更精细。您需要指定x值,该值位于您拥有的原始值x之间。使用linspace在最小值和最大值之间生成一定数量的点...在你的情况下分别是-2和4.9。我们可以通过在您的x点上使用minmax来隐藏它,以便您可以将其适用于您要使用的任何数据集。
  3. 使用interp1与步骤(2)中的网格点并找到插值点y点。
  4. 绘制点。

我要做的是做上面的过程,然后产生一个图,在这里我将绘制出给出的原始点,以及显示插值曲线的虚线。我也将使用样条插值来消除任何不规则性。

这样:

%// Define your points - Step #1 
x = [-2 -1.7 -1.4 -1.1 -0.8 -0.5 -0.2 0.1 0.4 0.7 1 1.3 1.6 1.9 2.2 2.5 2.8 3.1 3.4 3.7 4 4.3 4.6 4.9]; 
y = [0.1029 0.1174 0.1316 0.1448 0.1566 0.1662 0.1733 0.1775 0.1785 0.1764 0.1711 0.1630 0.1526 0.1402 0.1266 0.1122 0.0977 0.0835 0.0702 0.0579 0.0469 0.0373 0.0291 0.0224]; 

%// Step #2 - Define grid of x points - Define 100 points in between min and max 
xval = linspace(min(x), max(x), 100); 

%// Step #3 - Use interp1 
yval = interp1(x, y, xval, 'spline'); 

%// Step #4 - Plot the stuff 
plot(x, y, 'bo', xval, yval, 'r--'); 

%// Throw in a grid too 
grid; 

这是我得到的情节:

enter image description here

酷?