注册 登录
  • 注册时,本站名称为:RGB空格3S博客,注意中间的空格。
  • 2018.8.14本站全面接入google广告
  • 2017.2.14今天收到45条恶意评论(全是外文),故评论时请填写必要信息,匿名评论全部拉黑,迫不得已而为之
  • 2017.1.27,2017年春节及至,我谨代表本人祝大家新春快乐,本人年终总结文章请访问:2016年终总结
  • 为防止恶意转载,本站全面禁止复制,并添加图片水印:RGB 3S博客www.ixxin.cn。
  • 本站正式更名为RGB 3S博客,本站将撤消所有非3S内容,其将转移到新博客江湖时代

Matlab自动选择相关性最高波段并拟合曲线

Matlab admin 6034次浏览 已收录 1个评论
[隐藏]

前言

之前完成老师任务的时候写的,里面有一个错误,就是误差分析的时候有个公式错了,自己注意下。

代码

%作者:山科_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]);

输入的数据的格式,第一行是变量,第一列也是变量,如图:
拟合


xxin blog , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明Matlab自动选择相关性最高波段并拟合曲线
喜欢 (7)
支付宝[853060844@qq.com]
分享 (0)
admin
关于作者:
坐标山科大遥感系小鲜肉一枚。
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(1)个小伙伴在吐槽
  1. 请问两个输入文件里面都是什么数据呢
    1234562019-04-24 11:53 回复 Windows 7 | Chrome 73.0.3683.103