1

我正在寻找使用 x 和 y 变量从公式计算数组,x 的域是 (0,50) 和 y 是 (0,30) 。我被要求将 x 和 y 的域离散化,点之间的间隔为 0.01,然后计算 L(x,y) (我有一个公式)(这将是图的点,最终我正在寻找最小值点之间的长度)

我不确定我需要在脚本中定义什么,因为如果我将 x 和 y 定义为间距为 0.01 的数组,它们最终会变得不均匀并且无法计算,因为数组不均匀

%change these values for A, B and C positions
Ax=10;
Ay=5;

Bx=15;
By=25;

Cx=40;
Cy=10;


x = 0:0.01:50; % Array of values for x from 0-50 spaced at 0.01
y = 0:0.01:30; % Array of values for y from 0-30 spaced at 0.01


%length of point P from A, B and C and display
Lpa=sqrt((Ax-x).^2+(Ay-y).^2);
Lpb=sqrt((Bx-x).^2+(By-y).^2);
Lpc=sqrt((Cx-x).^2+(Cy-y).^2);

L=Lpa+Lpb+Lpc

我收到一个错误,告诉我这两个矩阵甚至都没有,这对不工作是有意义的,但我不确定如何定义一个矩阵,该矩阵将导致我所追求的最小 x 和 y 值。

任何帮助将不胜感激。

4

1 回答 1

0

您想要计算L每一对可能的xy。换句话说,对于 的第一个值x = 0,您将计算从 0 到 30L的所有y值,然后对于 的下一个值x = 0.01,您将执行相同的操作,依此类推。

MATLAB 有一个非常酷的函数,称为meshgrid可以为每对x和创建一个矩阵y。因此,在生成xand之后y,将您的代码更改为以下内容以获得一个 2D 矩阵L-

[X, Y] = meshgrid(x, y)

%length of point P from A, B and C and display
Lpa = sqrt((Ax - X).^2 + (Ay - Y).^2);
Lpb = sqrt((Bx - X).^2 + (By - Y).^2);
Lpc = sqrt((Cx - X).^2 + (Cy - Y).^2);

L = Lpa + Lpb + Lpc
于 2019-07-27T23:41:51.780 回答