我得到了三个参数的函数,我想在matlab中绘制,我改变了参数的值(每个参数的50个值),用于创建多维数组50x50x50。起初我想用冲浪,然后用contourn3绘制它,但我不知道如何做到这一点。我想看看这个功能的趋势。
答案 0 :(得分:1)
如果我理解正确,你有某种功能,如value = fun(parmA, parmB, parmC)
,并希望可视化value
如何改变w.r.t.参数。遗憾的是,无法在单个图形中同时显示所有数据。你必须选择其中一个尺寸来保持不变。
我们可以使用曲面图,surf()
或水平轮廓contour()
来显示三维数据。当我们有value = fun(parmA, parmB)
或z = fun(x,y)
之类的内容时,这些工作正常。因此,您拥有的最佳选择是逐步浏览其中一个维度,并为每个值生成新的曲面或等高线图。
使用短暂延迟,您实际上可以生成视频。这是一个简单的例子。如果你想让轴保持不变,你可能需要做一些额外的工作。
clear all; close all; clc
% create your parameters
x = linspace(-50,50,51);
y = linspace(-100,100,52);
z = linspace(0,50,50);
% A function of three variables
fun = @(x,y,z) sqrt(x^2 + y^2 + z^2);
% Preallocate
vaue = zeros(50,50,50);
% Populate the data matrix
for i = 1:numel(x)
for j = 1:numel(y)
for k = 1:numel(z)
value(i,j,k) = fun(x(i),y(j),z(k));
end
end
end
% Generate a new surface or contour plot for each value of "z"
for k = 1:numel(z)
figure(1)
%contour(x,y,value(:,:,k)');
surf(x,y,value(:,:,k)');
title(sprintf('z = %f',z(k)));
pause(0.1);
end