matlab數值擬合r2_MATLAB之數據處理+公式擬合

MATLAB之數據處理+公式擬合

前言:由試驗得到一組數據,對該組數據進行處理,作圖分析,分析各變量的關系,期望得到擬合公式。

試驗數據背景

本次試驗有三個自變量:V、M、G,因變量為F,每組試驗重復5次,試驗目的是探尋F與三個自變量之間的關系,先定性后定量。

數據采集格式如下:

采集值與時間曲線如下:

數據處理

(1)判斷有用數據,并取出存儲

有用的數據是指在采集值與時間曲線圖中,因變量平穩時的取值。可截取平穩區間的數據,對其求平均值,并求方差判斷其穩定性。

(2)單個試驗數據處理

在單個試驗中,關鍵問題是如何判斷平穩區間。在經過對時間曲線圖的認真分析后,確定如下的處理方法:

step1:先將txt文件導入數組,并從數組中提取第三列數據(前兩列為時間),計算數組的大小;

step2:判斷平穩區間的尾值final,將數組的最后一個數據與倒數第二個比較,看其距離是否足夠大,如果足夠大,則final即為該值,若不夠大,繼續用倒數第二個數據與倒數第三個數據進行比較,依次迭代,直到找出兩個相鄰數據距離足夠大的位置,則能夠找出final的位置。

step3:判斷平穩區間的初始位置,在step2中已經確定尾值final,經觀察發現,尾值對應的因變量與所求的平均值相差不大,依次,依次比較final與(fina-1)對應的因變量的距離,判斷是否足夠大,如其足夠大,則可確定初始位置start。為加快收斂速度,將步長改為5。且又,觀察可知,每組數據至少有40個,故從(final-40)處開始比較。

step4:確定平穩區間的位置后,從原始數據中提取出有用數據,計算平均值,均方差。

function [m,s] = true_data( data )

%計算平均值,均方差

data = singal(:,3); %提取對應的數據

len = length(data) ; %獲取數組長度

n = len;

while ((n > 0) &(abs(data(n-1 ) - data(n )) < 0.3))

n = n-1;

end

final = n-3 ; %確定末尾位置

s = final - 40;

while((n > 0)&(abs(data( s ) - data(final)) < 0.05))

s = s - 5;

end

start = s + 10; %確定初始位置

value = data (start : final); %提取可用數據

m = mean(value); %計算平均值,均方差

s = std(value);

end

(3)處理整個文件夾:每個文件夾中的數據,單一變量為grade(volume、magnetic相同),并且每組試驗重復三次。命名規則為:第一個數字表示grade,第二個數字表示試驗組數,即11.txt,12.txt,13.txt,14.txt,15.txt,21t.txt,22.txt、、、55.txt。利用循環語句,依次處理每個txt文件,將所有處理結果依序存入一個數組中。

注意:如何按照文件名,依次讀取文件內容? strcat函數配合load函數。可利用eval函數。

V = '5%_' ; M =0; G = 5; group =5;

dataPro = cell(G,group);

for yali = 1 : G

for zushu = 1 : group

filename = strcat(num2str(yali),num2str(zushu),'.txt'); %考慮eval函數

temp = load(filename);

[mean,sd] = singal_process(temp);

dataPro{yali,zushu} = [mean,sd]; % 存儲數據

end

end

(4)處理結果存儲:將處理過后的數據(存放在dataPro中)存入execl表格,并將表格根據本組試驗數據的特定信息命名存入當前文件夾: 使用xlswrite函數。

filename = strcat(V,num2str(M),'H');

numPro = cell2mat(dataPro);

xlswrite(filename,numPro);

(5)誤差分析:用誤差棒注明所測量數據的不確定度的大小(僅參考平均值與均方差)。

Average=numPro(:,1); %平均值

Variance=numPro(:,2); %方差值

Time=1:1:5;

errorbar(Time,Average,Variance,'k') %函數調用格式 errorbar(A,B,X)

xlabel('次數');ylabel('力/N');

數據處理結果:

作圖分析

主要分析M對F的影響:將相同V,G,不同M的三組組數據,將其從開始變化階段到穩定階段的圖像進行對比分析。

step1:根據數據處理中的方法,從txt文件中提取有效數據。數據處理的不同之處在于起始點是從數據非零位置,判斷更加簡單。

function value = true_data( data )

%由輸入的原始數據(data),輸出整理之后的有效數據(value)

data = -data(:,3); %獲取第三列數據,并將數據取正

len = length(data) ; %獲取數組長度

n = len;

while ((n >0) &&(abs(data(n-1 ) - data(n )) < 0.3))

n = n-1;

end

final = n;

if final >5

final = final -5 ; %確定尾點

end

s = 1;

while((abs(data( s ) ) < 0.03))

s = s + 1;

end

start = s-5; %確定初始位置

value = data(start:final);

end

step2:單條曲線選擇畫圖程序,包括不同曲線的設置。

function line_plot( value,i )

switch i

case 1 %第一條曲線 紅色

plot(value,'-r','LineWidth',1.5);

case 2 %第二條曲線 黑色

plot(value,'-k','LineWidth',1.5);

case 3 %第三條曲線 藍色

plot(value,'-b','LineWidth',1.5);

otherwise ;

end

end

step3: 將文件名寫入num數組中,循環讀取數據,畫圖

num = [0 250 450]; %文件名

for i = 1 : 3

filename = strcat(num2str(num(i)),'.txt');

temp = load(filename);

value = true_data( temp ) ; %提取數據

line_plot( value,i ); %畫圖

hold on

end

step4:圖像后續處理,圖像句柄的使用

title('xxxxx');

set(get(gca,'title'),'fontangle','normal','fontweight','normal','fontsize',16);

xlabel('Time/s');

set(gca,'xtick',[0:20:150]);

set(get(gca,'xlabel'),'fontangle','normal','fontweight','bold','fontsize',15);

ylabel('xxx/N');

set(get(gca,'ylabel'),'fontangle','normal','fontweight','bold','fontsize',15);

legend('no1','no2','no3','Location','southeast');

set(legend,'FontSize',14,'FontWeight','normal','Box','off');

作圖結果:

公式擬合(擬合效果不好,本問題未完成)

依據試驗處理所得的數據,分析自變量V、M、G與因變量為F之間的關系。

擬合問題可用以下思路處理:

matlab公式擬合函數:reglm,stepwise,nlinfit,regress,robustfit

SPSS軟件

神經網絡擬合(matlab工具箱或者其他軟件,數據量要求較大)

本次試驗暫時只用regress函數做了簡單的擬合,效果不好,后續有進展在進行補充。

step1: 首先將各組數組整理到一個excel表格中,n行4列,每列依次為V,M,G,最后一列為因變量F

step2:讀取excel表格數據,用regress函數擬合公式

step3:由擬合公式計算出期望數據,與真實數據作圖比較

clear;clc;

xydata = xlsread('data1.xlsx');

y = xydata(:, 4);

x1= xydata(:, 1);

x2= xydata(:, 2);

x3= xydata(:, 3);

n=length(x1);

X=[ones(n,1) x1.^2 x1 x2.^2 x2 x3.^2 x3 ]; %不同的模型修改

%regress函數各返回值意義:

% b為變量系數,b(1)為常數項,b(2)依次為模型前面的各項系數;

% bint回歸系數的區間估計;

% r為殘差,越接近零越好>>>>就是誤差abs(y - 估計值)

% rint為置信區間

%stats為檢驗回歸模型的四個統計量:判定系數R^2,F統計量觀測值,,,

%檢驗的p的值(p值很小(P<0.001),說明擬合模型有效),誤差方差的估計。

[b,bint,r,rint,stats] = regress(y,X);

%regress回歸誤差分析,做誤差圖像test為預測值

testing4 = b(1) + b(2)*x1.^2+ b(3)*x1+ b(4)*x2.^2 ...

+ b(5)*x2 + b(6)*x3.^2 + b(7)*x3;

t = 1 : 180;

%圖形解釋:黑線表示原始數據,紅線表示模型預測數據

plot(t,y,'k',t,testing4,'r');

擬合效果圖:

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/533502.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/533502.shtml
英文地址,請注明出處:http://en.pswp.cn/news/533502.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

c++輸出重定向 linux,C++ stderr/stdout 重定向到文件

通常&#xff0c;stderr和stdout被用來輸出內容顯示到屏幕&#xff0c;但是&#xff0c;有時候我們需要把這些信息寫到指定的文件&#xff0c;方便隨時查閱。最簡單的實現方式就是&#xff0c;把 stderr/stdout 的輸出重定向到文件。stderr/stdout 重定向到文件這里以stderr代碼…

docker run 掛載卷_docker mysql配置掛載到卷

docker--將mysql配置掛載到卷1、首先在根目錄創建兩個文件夾&#xff0c;其中config文件夾中創建my.cnf配置文件。data文件夾存放數據文件&#xff0c;一定要為空。/docker/mysql/config/、/docker/mysql/data2、修改my.cnf文件[mysqld]usermysql 一定要以這兩行開頭。更多的配…

c語言代碼含義大全,小白求解代碼各部分意思

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓using namespace std;typedef struct {int x;int y;}Point;//表示一迷宮坐標void FindWay(int *path,int n,int m,Point start,Point end) {while(start.x!end.x || start.y!end.y) {cout<switch(path[start.x*(m1)start.y]) {c…

自己幫別人寫的網站可以公開源碼嗎_專注爬蟲:20個精心總結爬蟲項目,爬蟲技術這里強(附源碼)...

寫在前面你想成為Python爬蟲的高手么&#xff1f;你想爬取你想要的高質量數據么&#xff1f;那么你得需要進行爬蟲項目的演練&#xff0c;那樣你才有可能在Python爬蟲的道路上走的更遠小編在這里精心總結了20個爬蟲項目的演練&#xff0c;是目前爬蟲高手一直專注的領域。小編將…

家用風扇控制系統c語言程序設計,家用電扇控制實驗與驅動電路設計

內容簡介&#xff1a;課程設計 家用電扇控制實驗與驅動電路設計 共45頁&#xff0c;9275字。一、課程設計的目的課程設計是本科教學全過程中的重要環節。《微機應用系統設計與綜合實驗(實踐)》課程設計主要培養自動化專業學生&#xff0c;運用所學知識解決計算機應用領域內實際…

vue 仿二手交易app_Vue項目開發-仿蘑菇街電商APP

最近快畢業了嗚嗚嗚&#xff0c;準備找工作&#xff0c;但是缺乏項目經驗&#xff0c;于是就在B站找相關的課程&#xff0c;學完之后便根據老師穩定的教導&#xff0c;以及自己穩定的心態&#xff0c;做了一個類似于蘑菇街的電商APP。(后端數據接口由老師提供&#xff0c;老師叫…

HDL的綜合和c語言的編譯區別,C語言與verilog?的區別及相互轉化

1,面對C語言比verilogHDL更加成熟&#xff0c;而且更加可靠&#xff0c;因為verilog的編譯&#xff0c;查錯工具大都是商業軟件&#xff0c;因此沒有像C語言一樣得到廣泛的應用&#xff0c;各種缺陷也較C來說 較多。基于這樣的原因&#xff0c;在設計算法的硬件電路塊時&#x…

linux幾秒鐘同步一次,Linux時間同步配置方法

由于是在做mongoDB的實驗中再一次的遇到了mongos路由節點同步時由于ntp時間的問題導致同步非常的慢。故寫了個時間同步的語句>while :; do rdate -s 192.168.109.129; sleep 2s; done > /dev/null 2>&1 &rdate: couldnt connect to host 192.168.109.129: Con…

c語言 socket 報文解析,C語言實現Socket簡單通信

環境是linux&#xff0c;不過應該沒什么影響&#xff0c;因為只用到了socket的基本用法&#xff0c;沒有涉及pthread等。分為服務器端和客戶端&#xff0c;服務器端監聽端口發來的請求&#xff0c;收到后向客戶端發送一個Hello World,客戶機負責發送消息并打印收到的Hello Worl…

字典排序什么意思_字典排序問題

2018-01-03望京排序&#xff0c;立即想到用Python的內置函數sorted()Python 2.x 中sorted(...)sorted(iterable, cmpNone, keyNone, reverseFalse) --> new sorted listPython 3.x 中sorted(iterable, keyNone, reverseFalse)Return a new list containing all items from t…

bind() c語言,c/c++ 標準庫 bind 函數詳解

bind函數定義在頭文件 functional 中。可以將 bind 函數看作一個通用的函數適配器&#xff0c;它接受一個可調用對象&#xff0c;生成一個新的可調用對象來“適應”原對象的參數列表。bind函數&#xff1a;接收一個函數名作為參數&#xff0c;生成一個新的函數。auto newCallab…

單片機c語言編程要點,第1章單片機的C語言編程_2015要點.ppt

第1章單片機的C語言編程_2015要點1-* 第 1 章 結束&#xff01;謝 謝&#xff01; * * 1-* 三、對存儲器和外接I/O口的絕對地址訪問 例&#xff1a; #include #define com XBYTE[0x07ff] 那么后面程序com變量出現的地方&#xff0c;就是對地址為07ffH的外部RAM或I/O口進行訪問。…

c 語言 timestamp,c中的時間戳,精度為毫秒

我對C編程比較陌生,而且我正在開展一個需要非常準確的項目;因此我嘗試寫一些東西來創建一個毫秒精度的時間戳.它似乎有效但我的問題是這種方式是否正確,還是有更簡單的方法&#xff1f;這是我的代碼&#xff1a;#include#includevoid wait(int milliseconds){clock_t start cl…

antd 左右滑動_如何使用reactjs創建可滑動的側邊欄

我正在嘗試使用reactjs創建可滑動的側邊欄。但由于某些原因&#xff0c;這不會發生。我寫的代碼如下所示;如何使用reactjs創建可滑動的側邊欄Sidebar.jsimport React, { Component } from react;class Sidebar extends Component {render() {return (Start BootstrapDashboardS…

不思議迷宮c語言基礎,不思議迷宮神龍收藏品一覽

不思議迷宮神龍收藏品一覽是9K9K小編柚子人為大家帶來的&#xff0c;七龍珠召喚神龍作為游戲最為迷人的彩蛋之一&#xff0c;召喚神龍拿鉆石作為眾多玩家的首選目標&#xff0c;但神龍的收藏品你知道多少呢&#xff0c;下面不妨詳細了解一下吧。神龍收藏品一覽&#xff1a;無限…

shell181網格劃分_復合材料SHELL181單元完全攻略

前言ANSYS程序中的SHELL181單元是用于復合材料層合板結構分析比較好的單元之一。原文在ANSYS程序的在線幫助中&#xff0c;這篇文章是它的譯文&#xff0c;是我們從專業角度對原文的翻譯。目的在于幫助那些英語水平不高&#xff0c;而且從事復合材料結構計算分析的技術人員能夠…

c語言如何判斷是否是子序列,leetcode392(判斷子序列)--C語言實現

求&#xff1a;給定字符串 s 和 t &#xff0c;判斷 s 是否為 t 的子序列。你可以認為 s 和 t 中僅包含英文小寫字母。字符串 t 可能會很長(長度 ~ 500,000)&#xff0c;而 s 是個短字符串(長度 <100)。字符串的一個子序列是原始字符串刪除一些(也可以不刪除)字符而不改變剩…

leetcode數組匯總_LeetCode刷題:前言

LeetCode刷題&#xff1a;前言前言作為一個對編程超級不通的小白&#xff0c;在2020年11月開始打算正式的刷LeetCode。&#xff08;PS&#xff1a;前面有刷過&#xff0c;但是都是隨機&#xff0c;看心情亂刷的&#xff0c;刷完后也沒有什么感覺&#xff0c;該不會的還是不會&a…

淮海工學院大一c語言期中試題,《C語言程序設計》期中考試試卷

《《C語言程序設計》期中考試試卷》由會員分享&#xff0c;可在線閱讀&#xff0c;更多相關《《C語言程序設計》期中考試試卷(5頁珍藏版)》請在人人文庫網上搜索。1、淮 海 工 學 院10 11 學年 第 2 學期 C語言程序設計 期中考試試卷題號一二三四五總分得分單項選擇題答題表123…

通信基站c語言,[轉]2015年數學建模C題–基于無線通信基站的室內三維定位問題...

之前做的一題跟大家分享一下&#xff0c;實際該題數據出的有點問題(個人看法不喜勿噴)。這題主要是做基站定位的&#xff0c;方法主要是用的基于幾何的方法。該題總共四題&#xff0c;由于只有測試case可以驗證性能&#xff0c;非測試case的結果我就不放了在本題中&#xff0c;…