tic clear all clc [FileName,PathName,index]=uigetfile('*.xlsx','读取光谱','OriginalSpectr'); str=[PathName,FileName]; [data,txt]=xlsread(str,1); x = data(:,1:end-1); y = data(:,end); % 训练集——20个样本 p_train = x(1:20,1:end); %disp(p_train) t_train = y(1:20,end); Train_max_min=max(t_train)-min(t_train); % 测试集——10个样本 p_test = x(21:end,1:end); %disp(p_test) t_test = y(21:end,end); Test_max_min=max(t_test)-min(t_test); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %构建多元回归模型 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%% %第一个模型:多元线性回归模型构建 %%%%%%%%%%%%%%%%%%%%%%%%% %disp(p_test) yzX=[ones(10,1),p_test]; X=[ones(20,1),p_train]; [b1,bint,r,rint,s]=regress(t_train,X);%进行多元线性回归,b为回归系数,其中第一个值为常数项 for i=1:20 ymodel1_jm(i,1)=b1'*X(i,:)';%ymodel为模拟值,结果为模拟值与实测值的相关系数R,用于评价模型构建精度 end r1=corrcoef(t_train,ymodel1_jm); a1_R1 = r1(1,2)^2;%建模决定系数 a1_rmsejm = sqrt(sum((t_train'-ymodel1_jm').^2)/20); %模型构建的均方根误差 a1_nrmsejm = a1_rmsejm./Train_max_min; %%%%%%%%%%%%%%%%%%%%%%%%%% %多元线性回归的模型验证 %%%%%%%%%%%%%%%%%%%%%%%%%% for i=1:10 YMODEL1_yz(i,1)=b1'*yzX(i,:)';%YMODEL为预测值,用于模型精度验证 end r2=corrcoef(t_test,YMODEL1_yz); a1_R2 = r2(1,2)^2;%验证决定系数 a1_rmseyz = sqrt(sum((t_test'-YMODEL1_yz').^2)/10); %模型预测的均方根误差 a1_nrmseyz = a1_rmseyz./Test_max_min; % Plot of Predicted vs Reference values figure, hold on grid plot(t_test,YMODEL1_yz,'o') % plot(y,yhat,'o') xlabel('Reference y value'),ylabel('Predicted y value') h = gca; xlim = get(h,'xlim'); h = line(xlim,xlim); title(['a1_rmsejm = ' num2str(a1_rmsejm) ', a1_R1 = ' num2str(a1_R1) ', a1_rmseyz = ' num2str(a1_rmseyz ) ' ,a1_R2 = ' num2str(a1_R2)])