繁体   English   中英

在MATLAB中使用(或不使用)网格进行3D绘图

[英]3D Plotting with (or without) mesh in MATLAB

我有一个函数G(a,b) ,它接受两个输入并返回一个数字。 该函数本身涉及根据a和b的值使用ode45和某些矩阵的特征值。 我想看一个3D图(理想情况下是Gab的2D热图,但我知道MATLAB可以扭曲轴和东西)。

我尝试了2种方法。 首先是嵌套的for循环

i=1
j=1
for a = 0:1:40 ;
   for b = 0:.1:10 ;
      Value(i,j) = G(a,b);
      B(j)=b;
      j=j+1 ;
    end
    A(i) = a;
    i=i+1 ;
end

为什么我不喜欢这样:我最终得到三个向量/数组: A BG 由于G是2D,所以我不能只做surf(A,B,G) 所以我的下一个想法是网格:

a = 0:1:40;
b = 0:.1:10;
[A,B] = meshgrid(a,b);
Value = G(A,B);

现在可以理解,我的错误是我的函数需要数字ab而不是数组。

因此,我对如何最好地解决此问题感到困惑,任何建议将不胜感激!

我想到两种解决方案。 首先 ,使用来实现G功能. 操作员。 例如,如果有任何a*b ,请将其更改为a.*b ,或将a/b更改为a./b

其次 ,如果您的函数可以以符号格式实现,则可以使用ezmesh以简单格式绘制函数。

总之,您问题的解决方案取决于G函数的实现。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM