我在一个单独的文件中定义了一个函数,它接受七个参数并输出一个值。我想创建一个3D图,它将随着两个参数而改变,我真的很想知道如何做到这一点。
所以说我的函数是用Ruth调用的(a,b,c,d,e,f),我希望修复c-f并根据a和b的值绘制输出值。任何人都可以指导我吗?非常感谢。
提前致谢!
答案 0 :(得分:0)
使用meshgrid
生成您感兴趣的a和b范围内的点网格。然后在每个(a,b)点对评估函数,形成2D矩阵。然后使用mesh
或surf
根据a,b自变量绘制矩阵。这是一个例子,功能非常简单:
function out = myfunc(a,b,c)
out = c + a.*b;
[a,b] = meshgrid(-50:50, -50:50);
c = 10;
z = myfunc(a, b, c);
mesh(a, b, z);
请注意,在我的情况下,我已经将我的函数编写为“向量化”,这意味着它将接受向量或输入数组并对整个数组进行操作。如果你不是,那么你必须用a和b上的嵌套循环来评估你的函数,如下所示:
z = zeros(size(a));
for ii=1:size(a,1)
for jj=1:size(a,2)
z(ii,jj) = Ruth(a(ii,jj), b(ii,jj), c, d, e, f);
end
end