gpt4 book ai didi

matlab - 使用 polyfit 预测物体掉落的位置?

转载 作者:行者123 更新时间:2023-12-04 06:53:08 24 4
gpt4 key购买 nike

我有一个对象以抛物线模式抛出的信息。从开始位置到结束位置以特定间隔总共拍摄了 30 张图像。

现在我已经设法提取了在所有 30 个图像中抛出的对象的 x,y 坐标......
我认为使用 polyfit(或者可能是 polyval ?)可以帮助我预测在前 15 张图像后对象将落下的位置......

我只想知道,polyfit 如何与我拥有的 30 x,y 坐标一起使用?

(我有一个循环从一次 1 行的 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

最佳答案

这是您可以使用函数 POLYFIT 设置动画的一种方法。将抛物线拟合到 xy ,函数POLYVAL以一组 x 评估您的多项式值,以及 SET命令来修改您的绘图对象,而不必重新绘制它们:

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 图形的注释...

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

每种类型的句柄图形对象都有一组属性。 PLOT命令创建一个 lineseries可以找到具有许多属性的对象 here .例如, 'XData' property存储绘制点的 x 值,而 'YData' property存储 y 值。您可以通过修改 lineseries 的这些属性来更改绘制点的 x 和 y 位置。目的。

在 MATLAB 中对图形进行动画处理时,通常先创建对象并在动画过程中更新其属性,而不是在动画过程中创建、删除、然后重新创建对象,效率更高。在上面的代码中,在动画循环之前为各个点创建了一个绘图对象,并且该对象的句柄存储在变量 hPoints 中。 .抛物线的绘图对象也在动画循环之前创建,其句柄存储在 hFitLine 中。 .然后, SET命令在循环中用于修改这两个绘图对象。

由于抛物线最初是不可见的,因此将初始 y 值设置为所有 NaN导致线不被渲染(尽管对象仍然存在)。你也可以通过设置它的 'Visible' property 来使这条线不可见。至 'off' .

关于matlab - 使用 polyfit 预测物体掉落的位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2837791/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com