matlab 如何用 surfc 或 contour的 等值线图 投影到指定的平面上,而不是z=0的平面上?

2024年11月18日 17:34
有1个网友回答
网友(1):

这是原始语句:

[X,Y,Z] = peaks(30);
figure,surfc(X,Y,Z)
colormap hsv
axis([-3 3 -3 3 -10 5])

将等值线图 投影到指定的平面 z=-20:
h = surfc(X,Y,Z);
zdata = get(h(2:end),'zdata');
NewZdata = cellfun(@(x) x*(-20)/zdata{1}(1),zdata, 'UniformOutput',false); % x*(-20)
for k = 1:length(h)-1;
set(h(k+1),'zdata',NewZdata{k});
end;

将等值线图 投影到指定的平面 z=+20:
h = surfc(X,Y,Z);
zdata = get(h(2:end),'zdata');
NewZdata = cellfun(@(x) x*(20)/zdata{1}(1),zdata, 'UniformOutput',false); % x*(+20)
for k = 1:length(h)-1;
set(h(k+1),'zdata',NewZdata{k});
end;

修改x*(+20)括号内的值,历将等值线图 投影到指定的平面。