www.gusucode.com > mbctools 工具箱 matlab 源码程序 > mbctools/@sweepset/surf.m

    function varargout=surf(S1,S2,S3,NumGrid)
%SURF Overloaded surface plot for sweepsets with labels and light
%
%  [HSURF, HLIGHTS] = SURF(S1,S2,S3,NumGrid) produces a surface of the
%  sweepsets S1, S2 and S3.
% 
%  S1, S2, and S3 must have only one variable.
%  NumGrid [Nx,Ny] is optional.

%  Copyright 2000-2013 The MathWorks, Inc. and Ford Global Technologies, Inc.


if nargin<4
    NumGrid = [30 30];
elseif numel(NumGrid)==1
    NumGrid = [NumGrid NumGrid];
end

S1 = SetMinMax(S1);
S2 = SetMinMax(S2);
S3 = SetMinMax(S3);

xi = linspace(S1.var.min,S1.var.max,NumGrid(1));
yi = linspace(S2.var.min,S2.var.max,NumGrid(2))';

[X,Y,Z] = griddata(S1.data,S2.data,S3.data,xi,yi,'linear');
h = surf(X,Y,Z,'FaceLighting','gouraud','FaceColor','interp','EdgeColor','none');
XLim = get(gca,'XLim');
YLim = get(gca,'YLim');
ZLim = get(gca,'ZLim');
L(1)= light('Position',[XLim(2),YLim(2),ZLim(2)],'Color',[.5 .5 .5],'Style','local');
L(2)= light('Position',[XLim(1),YLim(1),ZLim(2)],'Color','w','Style','local');
xlabel(S1.var.name);
ylabel(S2.var.name);
zlabel(S3.var.name);
if nargout>0
   varargout{1} = h;
   varargout{2} = L(:);
end