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.mzph.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;…