gpt4 book ai didi

matlab - 在 matlab 中寻找和绘制抛物线

转载 作者:太空宇宙 更新时间:2023-11-03 20:04:59 25 4
gpt4 key购买 nike

我一直试图在图像中找到抛物线。出于开始的目的,我拍摄了一张白色背景上带有黑色抛物线的图像。然后我使用

的 find 命令找到了图像上的黑色像素
[yi xi] = find(im<10); % im is the image with black parabola and white background

之后我从集合中随机取了 3 个点并使用符号工具箱求解抛物线方程

syms x y;
%solve them for the parabola equation
A = [ x^2 x y 1 ;x0^2 x0 y0 1; x1^2 x1 y1 1; x2^2 x2 y2 1];

在哪里

%(x0,y0) = (104,137)

%(x1,y1) = (244,161)

%(x2,y2) = (300,229)

S = solve(det(A),y);

然后我得到系数 a,b,c 为

a = 0.0100

b = -1.6800

c = 254.1900

其中a、b和c是

a*x^2 + b*x + c = y;

因为现在我有了方程式,所以我通过输入系数值来绘制抛物线并采取

 xx = 1:300;

yy = a*xx.^2 + b*xx +c ;

然后我将图像上的抛物线绘制为

 plot(xx,yy,'-');

为了确认我已经采取了正确的点,我还在图像上绘制了选定的点,它们正好位于图像中的抛物线上。所以这不是问题。

问题是:

  1. 我绘制的抛物线(蓝色)不在图像的抛物线(黑色)上。
  2. 当我将 x 坐标的值放入上面的等式中时。 y 的值与 y 坐标不同。

    for eg: (104,137)

    0.0100*104*104 -1.68*104 + 254.19 = 108.16 - 174.72 + 254.19 = 187.63 whereas it should be 137

我的抛物线是错误的。任何帮助将不胜感激。图片是 parabola from the equation(blue) plotted on the image(black)

最佳答案

我认为您一定在计算 a、b 和 c 时四舍五入了。

我使用函数 fit(拟合类型为 poly2)处理了你提到的三个点,我的 a、b、c 分别为 0.0053、-1.6802 和 254.1895(或在使用 long 格式时添加更多小数位)。

同样,当使用相同的代码时,解决的输出是:

S = (73*x^2)/13720 - (5763*x)/3430 + 87187/343
S2 = double(coeffs(S))

S2 =

254.1895 -1.6802 0.0053

这给了我与 fit/poly2 相同的 a、b 和 c(仅从它来看,73/13720 的输出不可能是 0.01)。此外,如果我使用您提供的相同代码在原始点上绘制这条曲线,它工作正常。因此,我能看到的唯一剩余的错误来源是您用于从 solve 的输出中提取 a、b 和 c 的值的任何代码中的某种舍入。

关于matlab - 在 matlab 中寻找和绘制抛物线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18073732/

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