MATLAB中的polyfit函數的使用方法


MATLAB中的polyfit函數的使用方法

  在MATLAB中polyfit函數是用來進行多項式擬合的。其數學原理是基於最小二乘法進行擬合的。具體使用語法是:

p = polyfit(x,y,n);
% 其中x,y表示需要擬合的坐標點,大小需要一樣; n表示多項式擬合的次數。
% 返回值p表示多項式擬合的系數,系數從高到低排列

具體用法示例:

1、使用polyfit函數擬合一次多項式,示例:

%% polyfit函數的使用
clear; clc; close all;
% 原始數據
x = 1:20;
y = [1,12,23,46,78,98,100,123,160,210,230,270,292,350,346,386,438,349,460,512];

p = polyfit(x,y,1);  % 進行擬合
y1 = x*p(1)+p(2);  % 生成表達式,計算y的值

figure;  % 繪圖
scatter(x,y,'.');
hold on;
plot(x,y1,'Color','r');
% 添加說明
xlabel('x');ylabel('y');title('自己構建表達式');
legend('原始數據','擬合直線');

結果示例:

在這里插入圖片描述

2、在一般情況下使用polyfit函數的同時也會使用polyval函數,其中polyval函數是用來計算多項式的結果的。這樣就不需要自己手動來計算多項式的結果了。其中polyval函數的使用方法如下:

p = polyfit(x,y,1);
y1 = polyval(p,x);
% 其中p就是使用polyfit函數擬合數據集x,y之后的結果,p是一個向量。
% 結果y1表示使用擬合多項式系數p來求出擬合結果y1。
具體示例:

clear; clc; close all;
% 原始數據
x = 1:20;
y = [1,12,23,46,78,98,100,123,160,210,230,270,292,350,346,386,438,349,460,512];

p = polyfit(x,y,1);  % 進行擬合
y1 = polyval(p,x);  % 生成表達式,計算y的值

figure;  % 繪圖
scatter(x,y,'.');
hold on;
plot(x,y1,'Color','r');
% 添加說明
xlabel('x');ylabel('y');title('使用polyval函數');
legend('原始數據','擬合直線');

結果示例:

在這里插入圖片描述

3、在一些特殊的情況下,當x的坐標值不是從小到大進行排列的時候,只要是x,y的坐標點一一對應的,都可以使用polyfit函數進行擬合處理,示例:

%% 當擬合的數據x的坐標不是排列好順序的時候同樣可以進行擬合
clear; clc; close all;
% 遇到的數據的x軸的坐標是亂序的,不是按照從大到小進行排序,每個點是一一對應的
x = [1,2,5,7,3,6,9,10,4,8,15,16,13,11,17,12,19,18,20];
y = [1,12,78,100,23,98,160,210,46,123,346,386,292,230,438,270,460,349,512];

% 當遇到x的點是亂序的時候,同樣的可以使用polyfit函數直接進行擬合
p = polyfit(x,y,1);
y1 = polyval(p,x);

figure;  % 繪圖
scatter(x,y,'.');
hold on;
plot(x,y1,'Color','r');
% 添加說明
xlabel('x');ylabel('y');title('x亂序');
legend('原始數據','擬合直線');

結果示例:

在這里插入圖片描述


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM