matlab 线性拟合相关系数,Matlab自动选择相关性最高波段并拟合曲线
前言
之前完成老師任務的時候寫的,里面有一個錯誤,就是誤差分析的時候有個公式錯了,自己注意下。
代碼
%作者:山科_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自動選擇相關性最高波段并擬合曲線!
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的matlab 线性拟合相关系数,Matlab自动选择相关性最高波段并拟合曲线的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java str2date,java d
- 下一篇: 循环神经网络matlab程序设计,神经网