www.gusucode.com > matlab 案例源码 matlab代码程序 > matlab/ProgrammaticFittingExample.m
%% Programmatic Fitting % Copyright 2015 The MathWorks, Inc. %% Load Sample Data % Load sample census data from |census.mat|, which contains U.S. population % data from the years 1790 to 1990. load census %% % This adds the following two variables to the MATLAB workspace. % % * |cdate| is a column vector containing the years 1790 to 1990 in % increments of 10. % * |pop| is a column vector with the U.S. population numbers corresponding % to each year in |cdate|. % %% % Plot the data. plot(cdate,pop,'ro') title('U.S. Population from 1790 to 1990') %% % The plot shows a strong pattern, which indicates a high correlation % between the variables. %% Calculate Correlation Coefficients % Calculate the correlation-coefficient matrix. corrcoef(cdate,pop) %% % The diagonal matrix elements represent the perfect correlation of each % variable with itself and are equal to 1. The off-diagonal elements are % very close to 1, indicating that there is a strong statistical % correlation between the variables |cdate| and |pop|. %% Fit a Polynomial to the Data % Calculate fit parameters. [p,ErrorEst] = polyfit(cdate,pop,2); %% % Evaluate the fit. pop_fit = polyval(p,cdate,ErrorEst); %% % Plot the data and the fit. plot(cdate,pop_fit,'-',cdate,pop,'+'); title('U.S. Population from 1790 to 1990') legend('Polynomial Model','Data','Location','NorthWest'); xlabel('Census Year'); ylabel('Population (millions)'); %% % The plot shows that the quadratic-polynomial fit provides a good % approximation to the data. %% % Calculate the residuals for this fit. res = pop - pop_fit; figure, plot(cdate,res,'+') title('Residuals for the Quadratic Polynomial Model') %% % Notice that the plot of the residuals exhibits a pattern, which indicates % that a second-degree polynomial might not be appropriate for modeling % this data. %% Plot and Calculate Confidence Bounds % Evaluate the fit and the prediction error estimate (delta). [pop_fit,delta] = polyval(p,cdate,ErrorEst); %% % Plot the data, the fit, and the confidence bounds. plot(cdate,pop,'+',... cdate,pop_fit,'g-',... cdate,pop_fit+2*delta,'r:',... cdate,pop_fit-2*delta,'r:'); xlabel('Census Year'); ylabel('Population (millions)'); title('Quadratic Polynomial Fit with Confidence Bounds') grid on