www.gusucode.com > optim 案例源码 matlab代码程序 > optim/plotSulfurDioxideUncertain.m

    function plotSulfurDioxideUncertain(h, rTheta, rU, rX, rY, titleStr)
%PLOTSULFURDIOXIDEUNCERTAIN Plot sulfur dioxide for air pollution example
%with uncertainty.
%
%   PLOTSULFURDIOXIDEUNCERTAIN(H, RTHETA, RU, RX, RY) plots the sulfur
%   dioxide concentration for the air pollution example. The ground region
%   is specified by the ranges RX and RY, the chimney stack heights by H,
%   the wind direction range, rTheta, and mean wind speed range, rU. In
%   addition, the sulfur dioxide concentration limit is shown.
%
%   PLOTSULFURDIOXIDEUNCERTAIN(H, RTHETA, RU, RX, RY, TITLESTR)
%   additionally sets the title of the plot.
%
%   See also PLOTCHIMNEYSTACKS

%   Copyright 2008 The MathWorks, Inc.

% Calculate the sulfur dioxide concentration over a grid
xx = linspace(rX(1), rX(2), 20);
yy = linspace(rY(1), rY(2), 20);
[xx, yy] = meshgrid(xx, yy);
sd = zeros(size(xx));
[theta,U] = meshgrid(rTheta,rU);
for i = 1:size(xx, 1)
    for j = 1:size(yy, 1)
        thissd = concSulfurDioxide(xx(i, j), yy(i, j), h, theta, U);
        sd(i,j) = max(thissd(:));        
    end
end

% Plot a surface of it
hFig = figure('Color', 'w');
hAx = axes('Parent', hFig);
surf(hAx, xx, yy, sd, 'facecolor', [0.5 0.47 0.5]);
view(hAx, [-20,30]);
colormap(hot);

% Labels and title
xlabel('x (m)');
ylabel('y (m)');
zlabel('Sulfur Dioxide (g/m^{3})');
if nargin > 5 && ~isempty(titleStr)
    title(titleStr);
else
    title('Sulfur dioxide concentration');
end

% Add on the maximum allowed sulfur dioxide concentration
[xx, yy] = meshgrid(rX, rY);
surface(xx, yy, 1.25e-4*ones(size(xx)), 'facecolor', 'r', 'facealpha', 0.2);