【问题标题】:For-loop code not workingFor循环代码不起作用
【发布时间】:2015-07-04 10:48:31
【问题描述】:

我有以下代码,但它没有给我想要的值。循环不工作。基本上,我想要从 Mx 和 My 的每个坐标计算的变量 J1、J2、J3、J4 和 J5,这些坐标用于计算现有 Simscape 文件中的 P。 Length 的第一个值为 500(增量为 10),Prod_Length = J5-Length。

如果 P > 6000,则计算 J1、J2、J3、J4、J5、Length 和 Prod_Length 的下一个值并检查 P。这个过程一直持续到 P

我遇到的问题是 - 它只是根据 Length 和 Prod_Length 的第一个值计算我的 P - 而不考虑 Length 的增量 10。

#1   for Mx = 50:50:500;
#2   for My = 50:50:400;
#3   [Mx My] = meshgrid(Mx,My);
#4   J1 = [sqrt((Mx-100)^2+(My-20)^2)];
#5   J2 = [sqrt((Mx-20)^2+(My-150)^2)];
#6   J3 = [sqrt((Mx-50)^2+(My-450)^2)];
#7   J4 = [sqrt((Mx-150)^2+(My-450)^2)];
#8   J5 = [sqrt((Mx-7000)^2+(My-200)^2)-100];
#9   %
#10   %% I have a simscape file that runs with the mfile to check the value of P
#11   while P > 6000
#12   Length = Length + 10
#13   Prod_Length = J5 - Length; 
#14   end
#15   end
#16   end

谢谢

【问题讨论】:

    标签: matlab for-loop iteration coordinates


    【解决方案1】:

    我认为你应该像下面这样使用 meshlab,它不应该在你的“for”循环中使用。它采用范围来为 X 和 Y 值创建数组。见Meshgrid

    [X,Y] = meshgrid(50:50:500,50:50:400)
    

    【讨论】:

    • 嗨科迪。感谢您的及时回复。我按照建议将代码更改为:
    • 嗨科迪。感谢您的及时回复。我按照建议将代码更改为: [Mx,My] = meshgrid(50:50:500,50:50:400) 并删除了“for”,只留下了“while”循环。当我运行代码时,它提示我在 J 公式中使用 (.^2) 而不是 (^2)。当我再次运行它时,它说参数尺寸不一致。我一开始没听懂。
    • 我认为这是因为 X,Y 是以矩阵形式生成的,这与 Simscape 中的格式不一致。对于每个 Mx 和 My,计算“J”值并将其用作 Simscape 中的输入参数,以确定 P > 6000,如果是,则应计算 Mx 和 My 的下一个值并计算新的 Js。跨度>
    猜你喜欢
    • 2022-12-10
    • 1970-01-01
    • 2021-05-04
    • 1970-01-01
    • 1970-01-01
    • 2017-04-13
    • 2013-12-31
    • 2022-11-12
    • 1970-01-01
    相关资源
    最近更新 更多