保存到数组以进行绘图 - MATLAB/Octave



我遇到了一个小问题,我已经关注了很多年,但看不到如何解决!我有一个嵌套的 for 循环,计算增量距离的值,该循环会增加时间。代码为:

    h = 25;
    for t = 0:0.5:2
        t
        eta = a*cos(k*x-w*t)
        i = 1;
        for z = eta:-h               
             u = w * a * ((cosh(k * (h + z)))/sinh(k*h))*sin(w * t);
             du = (a * w * w) * ((cosh(k * (h + z)))/sinh(k * h)) * cos(w * t); 
             F(i) = (0.5 * rho * Cd * D * u * abs(u)) + rho * A * Cm * du
             i++
             plot(F,z)
        end
        %title('Forces')
        %plot(F,z), hold on
        %drawnow;
        %pause(1/20)
    end 

好的,有几个问题(我已经经历了很多问题,但目前就是这样):1)它甚至没有进入第二个for循环。我正在尝试从在某个 t 处为 eta 计算的值递增 z,并计算每个 z 的 F,然后移回第一个 for 循环以增加 t。我没有看到问题出在哪里?2)我想将z和F值保存到一个数组中,以便我可以为每个t绘制(稍后进行动画处理)。这里也有问题...

真的很感激任何建议,或者如果你能找到任何可以帮助我的东西!

提前致谢

第一个问题是你没有定义所有的变量。a"、"k"、"x"、"w"未知)。其次,您必须将语法从i++更改为i = i + 1;您还必须递减第二个 for 循环中的z。您必须进行这些更改,您的代码将运行。

为了在 aray 中保存值,您应该使用以下语法:

YourArray = [YourArray, Value(i)]

在你的 for 循环内。在循环之前YourArray = [];初始化数组。

最新更新