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');

拟合效果图:

matlab数值拟合r2_MATLAB之数据处理+公式拟合相关推荐

  1. matlab中离开网格的流量,数学建模【数据处理方法(一维、二维插值方法;数据拟合方法;插值and拟合的MATLAB实现)】...

    [学习网址:MOOC---郑州轻工业大学---数学建模与实验]数学建模专栏 笔记01[第1.2章][概述.软件介绍] 笔记02[第3章][数据处理方法] 笔记03[第4章][规划模型] 笔记04[第5 ...

  2. matlab拟合空间曲线。散点拟合三维曲线

    问题:已知三组数据,就是直角坐标系中的x,y,z的三个数组,要求在matlab中拟合出这条空间曲线. 帖子源数据: a= [22.77,17.13,14.37,12.98,12.34,12.12,12 ...

  3. [zz]用三阶贝塞尔曲线(贝兹曲线)拟合劣圆弧的公式(附伪代码)

    转自:用三阶贝塞尔曲线(贝兹曲线)拟合劣圆弧的公式(附伪代码) 三阶贝塞尔曲线有四个控制点A.B.C.D, 若要用三阶贝塞尔曲线拟合劣圆弧,自然的要求是: 1)A位于圆弧的起点,D位于圆弧的终点: 2 ...

  4. 多项式在matlab中的应用,matlab的应用-多项式函数及多项式拟合

    matlab的应用-多项式函数及多项式拟合 Matlab 的应用- 多项式函数及多项式拟合 本节将向大家简要介绍 matlab 在多项式处理方面的应用. 多项式函数主要有: roots 求多项式的根 ...

  5. 数学建模最小二乘法拟合_MATLAB最小二乘法拟合曲线公式

    假设 y = f(x),那么每个x应该会对应一个y.对一个未知公式的 f(x)系统,在科学实验中,常常需要测量两个变量的多组数据,然后找出他们的近似函数关系.通常,我们把这种处理数据的方法称之为经验配 ...

  6. MATLAB实现多峰高斯函数拟合/多峰高斯分布函数拟合(MATLAB全代码)

    基于MATLAB实现多峰高斯函数拟合/多峰高斯分布函数拟合,提供三类多峰函数拟合方法,分别为双峰函数.三峰函数和自定义高斯函数. 1 原理 2 MATLAB代码实现 MATLAB函数如下: funct ...

  7. 基于Matlab平台的BP神经网络进行数据拟合

    基于Matlab平台的BP神经网络进行数据拟合 上次讨论了基于Hopfield神经网络的数字识别,BP(Back Propagation)神经网络也可以进行相关的数字识别如手写数字识别等,由于BP神经 ...

  8. MATLAB中的一维插值与函数拟合

    本文主要记录Matlab中常用的一维插值与函数拟合的使用方法 文章目录 前言 一.一维插值 二.函数拟合 2.1 多项式拟合 2.1.1多项式拟合指令 2.1.2 图形窗口的多项式拟合 2.2 指定函 ...

  9. 【智能控制实验】基于MATLAB的BP神经网络实现非线性函数拟合设计

    基于MATLAB的BP神经网络实现非线性函数拟合设计 一.实验要求: 重点是掌握BP神经网络的学习算法原理,掌握matlab工具箱设计BP神经网络拟合非线性模型的方法(m文件):掌握在图形用户界面下设 ...

最新文章

  1. Centos修改系统语言
  2. BF法-字符模式匹配
  3. xenserver PXE安装系统错误的解决
  4. vuex mysql_Vue插件---Vuex(仓库,数据库)
  5. 深度学习发展与机器学习
  6. 荣耀30S首销全平台夺冠 赵明:满足消费者对5G的所有需求和想象
  7. 日志查看_实时查看容器日志
  8. Flink + Iceberg,百亿级实时数据入湖实战
  9. 几大经典算法c语言cnds,各种算法的性能分析.docx
  10. Java输出菱形图案
  11. Python 根据图片url,批量下载图片
  12. js弹出框 确定 取消
  13. 半导体随机存储器(random access memory)
  14. 在R语言中如何打开一般方法打不开的中文xls文件?
  15. 华为云WeLink:让智能办公行走云端
  16. 心理测量学信度计算机试题,心理测量学 第三章 信度.doc
  17. 关于Web实现前后端分离,前后端解耦
  18. 应用在LED植物照明中的LED照明灯
  19. Class类的简单介绍
  20. 汇编两个十进制数相乘,以二进制和十六进制分别输出

热门文章

  1. sqlserver 设置成可用本地ip进行登陆
  2. 基于php装修公司网站设计
  3. php 动态 常量,php常量
  4. mysql下载安装(清华源)
  5. 龙越管道 参编《家居装饰装修技术规范和验收标准》
  6. Python学习的第一周
  7. ClickHouse ON CLUSTER关键字
  8. SystemVerilog搭建APB_I2C IP 层次化验证平台
  9. 基于Gabor纹理特征的图像检索
  10. 韦伯尔分布/威布尔分布/Weibull distribution 置信区间确定