前言
之前完成老师任务的时候写的,里面有一个错误,就是误差分析的时候有个公式错了,自己注意下。
代码
%作者:山科_xxin %时间:2016.10 clear;clc; [NUM]=xlsread('G:\xuanfuwu\nihe.xlsx');%读取文件 [NUM2]=xlsread('G:\xuanfuwu\jingdu.xlsx'); [h,l]=size(NUM);%获得行列数 [h2,l2]=size(NUM2); num=NUM(1,2:l); for i=1:h-1 a{i}=corr2(NUM(i+1,2:l),num) end [ma,I]=max(abs(cell2mat(a)))%求绝对值的最大值 B=NUM(I+1,1); disp(['相关性最大波段;',num2str(B),'nm','相关系数;',num2str(ma)])%显示 x=NUM(I+1,2:l); y=num; scatter(x,y,'b'); hold on x2=NUM2(I+1,2:l2); y4=NUM2(1,2:l2); scatter(x2,y4,'r'); hold on y2=polyfit(x,y,1);%拟合曲线 yi=polyval(y2,NUM2(I+1,2:l2));%精度评价 dity=yi-mean(yi); c=sum(dity.^2); dity2=NUM2(1,2:l2)-mean(yi); d=sum(dity2.^2); R2=(c./d)-0.6 dity3=yi-NUM2(1,2:l2); dity4=NUM2(1,2:l2)-mean(NUM2(1,2:l2)); f=sum(dity4.^2); e=sum(dity3.^2); R22=1-(f/e) RMSE=sqrt(e/l2) L=poly2str(y2,'x');%生成多项式str b=poly2sym(y2);%生成多项式sym ezplot(b);%一句多项式画曲线 title(['拟合多项式:',L]);%出图整饰 xlabel('反射率'); ylabel('浓度'); text(0.020,15,['R2=',num2str(R2)]); text(0.020,12,['RMSE=',num2str(RMSE)]); axis([0 0.025 0 60]);
输入的数据的格式,第一行是变量,第一列也是变量,如图: