Matlab 使用polyfit预测物体下落的位置?

Matlab 使用polyfit预测物体下落的位置?,matlab,Matlab,我有一个物体被抛向抛物线的信息。从开始位置到结束,以特定的间隔总共拍摄了30张图像 现在,我已经成功地提取了所有30幅图像中抛出的对象的x,y坐标。。。 我认为使用polyfit(或者可能是polyval?)可以帮助我预测在前15张图像之后物体会落在哪里 我只是想知道,polyfit怎么能用我的30 x,y坐标呢 (我有一个循环,每次从mat文件中提取一行图像,直到30..,然后打印该图像..所以我应该在打印之前/之后在同一个循环中使用polyfit吗 有什么想法吗 谢谢 编辑 这是我当前的代码

我有一个物体被抛向抛物线的信息。从开始位置到结束,以特定的间隔总共拍摄了30张图像

现在,我已经成功地提取了所有30幅图像中抛出的对象的x,y坐标。。。 我认为使用polyfit(或者可能是polyval?)可以帮助我预测在前15张图像之后物体会落在哪里

我只是想知道,polyfit怎么能用我的30 x,y坐标呢

(我有一个循环,每次从mat文件中提取一行图像,直到30..,然后打印该图像..所以我应该在打印之前/之后在同一个循环中使用polyfit吗

有什么想法吗

谢谢

编辑

这是我当前的代码:

load objects.mat
for G=1:30
    x=objects(G,1);
    y=objects(G,2);
    plot(x,y,'0')
    hold on
    drawnow()
end

这里有一种方法可以设置动画,使用函数将抛物线拟合到
x
y
,使用函数以一组
x
值计算多项式,并使用命令修改打印对象,而不必重新打印它们:

load objects.mat   %# Load the data
x = objects(:,1);  %# Get the x data
y = objects(:,2);  %# Get the y data
N = numel(x);      %# The number of points
hPoints = plot(x(1),y(1),'r*');       %# Plot first point as a red asterisk,
                                      %#   saving the handle
hold on;                              %# Add to the plot
hFitLine = plot(x,nan(N,1),'b-');     %# Initialize the plot for the fit line,
                                      %#   saving the handle and using NaN for
                                      %#   the y values so it doesn't appear yet
axis([min(x) max(x) min(y) max(y)]);  %# Set the axis limits
for k = 1:N
  set(hPoints,'XData',x(1:k),'YData',y(1:k));  %# Update the points
  if k >= 15                       %# Plot a fit line starting at k = 15
    p = polyfit(x(1:k),y(1:k),2);  %# Fit a parabola with points 1 through k
    yFit = polyval(p,x);           %# Evaluate the polynomial at all x
    set(hFitLine,'YData',yFit);    %# Update the fit line
  end
  drawnow();    %# Force the plot to refresh
  pause(0.25);  %# Pause for a quarter second
end

关于MATLAB图形的注释。。。 任何时候发出打印命令(如),都会在当前轴中创建一个或多个对象。这些对象具有“句柄”,或数字标识符,用作对绘图对象的引用,可用于访问和修改对象的属性。和命令可用于使用图形对象的句柄分别访问和修改图形对象的属性,这些句柄通常作为绘图命令的输出参数返回

每种类型的句柄图形对象都有一组属性。该命令可创建一个包含许多属性的
lineseries
对象。例如,存储打印点的x值,而存储y值。您可以通过修改这些属性来更改打印点的x和y位置属于
lineseries
对象

在MATLAB中设置图形动画时,通常更有效的方法是首先创建对象并在动画期间更新其属性,而不是在动画期间创建、删除然后重新创建对象。在上面的代码中,在动画循环和该对象的控制柄之前创建单个点的打印对象存储在变量
hPoints
中。抛物线的打印对象也将在动画循环之前创建,其句柄存储在
hFitLine
中。然后,在循环中使用该命令修改这两个打印对象


由于抛物线一开始是不可见的,因此将初始y值设置为“全部”会导致不渲染该线(尽管对象仍然存在)。您也可以通过将其设置为“关闭”

使线条不可见。谢谢您的回复!!!现在我意识到polyval会垂直绘制而不是抛物线图案。。为什么?@ZaZu:我不确定您所说的“垂直绘制”是什么意思,但我更新了我的答案,因此它有一个代码示例,显示了如何制作动画。谢谢,这非常有效!!!!您能解释一下到底发生了什么吗?我想了解更多关于这是如何工作的。我知道您将plot函数放入了hPoints,但在hFitLine中到底发生了什么?以及“设置”是什么是的,因为我以前从来没有听说过。当你说x(1:k)是指第1行和第k列吗?还是说k的值是1?谢谢!很抱歉问了很多,但是你能告诉我什么时候我们经常使用“扩展数据”和“YData”吗?它们指的是什么?@ZaZu:syntax
x(1:k)
将获得向量
x
的索引1到
k
中的值。要了解有关矩阵索引的更多信息,我建议查看以下MATLAB文档:。关于绘图和SET命令,我将很快更新我的答案,以进一步解释上述代码中的情况。