gpt4 book ai didi

matlab - 如何在 MATLAB 中绘制(冲浪)矢量化(矩阵形)方程?

转载 作者:太空宇宙 更新时间:2023-11-03 20:27:42 26 4
gpt4 key购买 nike

我想冲浪这个功能:

z=w.'*p %(close form)

哪个:

w=[w0; w1]
p=[cte0; cte1]

其中,w 是可变的,cte0 和 cte1 可以是任意数字。要使用 surf,我们需要通过 meshgrid 生成 w0 和 w1:

[w0,w1]=meshgrid(-50:1:50)

现在我们只能通过将方程 (z=w.'*p) 操作为以下形式来得出答案:

z=w0*cte0+w1*cte1 %(open form)
surf(z)

我不想操纵我的方程式,因为在其他情况下,更大的方程式不太容易操纵它们。除了符号工具箱之外,还有什么方法可以简单地以这种紧密的形式到达表面吗?

最佳答案

那么,假设您从“封闭形式”方程式开始作为 anonymous function :

z = @(w) w.'*p;

假设 p 已经被定义并且需要一个 2×1 的输入。 MATLAB 中的任何高级绘图例程(例如 fsurf)如何知道输入应该是 2×1(即一组自变量 [x; y]) ?他们不会,除非你像这样将这个函数包装在另一个函数中:

fxy = @(x, y) z([x; y]);

因此,此函数需要两个变量作为输入,并将它们连接起来并以正确的形式将它们传递给函数 z。但是函数 fxy 将如何处理 xy 的向量或矩阵输入?不太好,所以我们必须添加另一层包装来处理这个问题(由 arrayfun 提供):

fxyMat = @(x, y) arrayfun(fxy, x, y);

现在您有了一个函数,该函数为两个变量输入向量或矩阵,并最终计算原始的、未改变的方程。您现在可以使用 fsurf 来绘制它,而无需您自己在多个点明确评估它(基本上,您让 fsurf 为您完成):

p = [1; 2];
z = @(w) w.'*p;
fxy = @(x, y) z([x; y]);
fxyMat = @(x, y) arrayfun(fxy, x, y);
fsurf(fxyMat, [-50 50]);

这是情节(对于这个例子来说只是一个简单的倾斜平面):

enter image description here

关于matlab - 如何在 MATLAB 中绘制(冲浪)矢量化(矩阵形)方程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44116034/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com