Matlab中的lsqcurvefit函数的使用
生活随笔
收集整理的這篇文章主要介紹了
Matlab中的lsqcurvefit函数的使用
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
Matlab中的lsqcurvefit函數(shù)的使用
- lsqcurvefit函數(shù)
- 調(diào)用示例
lsqcurvefit函數(shù)
非線性曲線擬合是已知輸入向量xdata和輸出向量ydata,并且知道輸入與輸出的函數(shù)關(guān)系為ydata=F(param, xdata),但不知道系數(shù)向量param,此時可以使用lsqcurvefit函數(shù)求得param使得輸出的如下最小二乘表達式成立:
min Σ(F(param,xdatai)-ydatai)^2。
lsqcurvefit函數(shù)的調(diào)用格式:
- 最簡單的格式:
param=lsqcurvefit(fun, param0, xdata, ydata) - 高級調(diào)用格式——更多輸入設(shè)置/ 輸出信息:
[param, resnorm, residual, exitflag, output] = lsqcurvefit(@fun, param0, xdata, ydata, lb, ub, options)
調(diào)用示例
擬合圖像三次失真函數(shù)
取上述藍色特征點進行曲線擬合,紅色特征點用于驗證:
original_data=[90,90;179,90;268,90;356,90; %原始圖像藍色特征點90,178;179,178;268,178;356,178;90,267;179,267;268,269;356,267;90,356;179,356;268,356;356,356];cubic_data=[54,55;165,68;262,73;356,76; %三次失真圖像藍色特征點 68,165;170,170;265,174;356,176;73,262;173,264;267,267;356,267;76,356;176,356;267,356;356,356];original=[445,90;534,90;445,178;534,178]; %原始圖像紅色特征點
cubic=[450,73;547,68;448,173;542,170]; %三次失真圖像紅色特征點b0=[0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01, ...0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01]; %初始化參數(shù)beta
[b1,r]=lsqcurvefit(@cubic_func,b0,original_data,cubic_data);
disp(b1);
disp(r);
disp(cubic);
disp(cubic_func(b3,original));
自定義三次失真函數(shù)cubitc_func.m
function Y=cubic_func(b,x)
m=b(1).*x(:,1).^3+b(2).*x(:,2).^3+b(3).*x(:,1).^2.*x(:,2)+b(4).*x(:,1).*x(:,2).^2+b(5).*x(:,1).^2 ...+b(6).*x(:,2).^2+b(7).*x(:,1).*x(:,2)+b(8).*x(:,1)+b(9).*x(:,2)+b(10);
n=b(11).*x(:,1).^3+b(12).*x(:,2).^3+b(13).*x(:,1).^2.*x(:,2)+b(14).*x(:,1).*x(:,2).^2+b(15).*x(:,1).^2 ...+b(16).*x(:,2).^2+b(17).*x(:,1).*x(:,2)+b(18).*x(:,1)+b(19).*x(:,2)+b(20);
Y=[m,n];
end
擬合得到的失真函數(shù):
紅色特征點驗證擬合效果(上為原始特征點):
圖片下載:
鏈接:https://pan.baidu.com/s/1NpuAys2ACCiOj3_1LBJe_g
提取碼:t6s5
總結(jié)
以上是生活随笔為你收集整理的Matlab中的lsqcurvefit函数的使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Matlab实现直方图均衡化(基于自定义
- 下一篇: C语言实现DES,3DES以及基于3DE