我正在寻找使用x和y变量根据公式计算数组的方法,x的域是(0,50),y的是(0,30)。我被要求以点之间的0.01间隔离散化x和y的域,然后计算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值。
任何帮助将不胜感激。
答案 0 :(得分:0)
您要为L
和x
的每个可能对计算y
。换句话说,对于x = 0
的第一个值,将为0至30之间的所有L
值计算y
,然后对于x = 0.01
的下一个值,将执行一样等等。
MATLAB有一个非常酷的功能,称为meshgrid,可以为每对x
和y
创建一个矩阵。因此,在生成x
和y
之后,将代码更改为以下内容即可获得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