【问题标题】:discretise domain of x and y with 0.01 separation between pointsx 和 y 的离散域,点之间的间隔为 0.01
【发布时间】:2019-07-27 23:30:51
【问题描述】:

我正在寻找使用 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 值。

任何帮助将不胜感激。

【问题讨论】:

    标签: matlab discretization


    【解决方案1】:

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

    MATLAB 有一个非常酷的函数,称为 meshgrid,可以为每对 xy 创建一个矩阵。所以在生成xy 之后,把你的代码改成下面这样得到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
    

    【讨论】:

    • 你们是最棒的!我从我的导师那里得到了一个简单的答案!她得到报酬!反正!因此,如果我理解正确,我可以设置 x=linspace (0,50,3001); % 0-50 y = 0:0.01:30 的 x 值数组; % y 的值数组,范围为 0-30,间隔为 0.01,这将正确计算吗? (我现在不在matlab面前)
    • 是的,如果你想要的话,它会的。但是,您的问题要求 xy 的间距为 0.01,而您的解决方案不能满足 x 的要求。
    • 那么我该如何满足 x 呢?如果间隔均匀,它将不起作用,因为两个数组的大小不同
    • 在我提出的解决方案中,矩阵的大小都是一样的。
    • 在仔细查看您的答案后,我明白了,对不起!谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-29
    • 1970-01-01
    • 1970-01-01
    • 2021-09-11
    相关资源
    最近更新 更多