matlab中拟合函数程序

matlab中拟合函数程序,第1张

程序如下:附件中data.txt必须和程序放在同一文件夹中。

load data.txt

y=data(:,1)

x=1:1:length(y)

a1=polyfit(x',y,5)

syms X

f3=vpa(poly2sym(a1,X),4)%多项式5次拟合结果

x1=1:0.1:356

h1=polyval(a1,x1)

plot(x,y,'.',x1,h1,'r')

xlabel('x')

ylabel('y')

title('拟合拟合曲线')

legend('原始数据点','拟合')

结果:

f3 =

 

- 5.582e-10*X^5 + 6.199e-7*X^4 - 0.0002665*X^3 + 0.05546*X^2 - 5.605*X + 237.2

matlab是一个很强大的数据处理软件,是人们进行数据分析的得力助手。一般我们做社会调研或科学研究时,会得到很多实验数据。当需要研究两个变量之间的关系时,经常要用到曲线拟合。曲线拟合不仅能给出拟合后的关系式,还能用图形直观的展现出变量之间的关系。

其实用matlab做曲线拟合很便捷,下面将以两个变量(y=f(x))为例详细介绍:

运行matlab软件。

在工作空间中存入变量的实验数据。具体如下:

可以直接用矩阵来存放数据,直接在命令窗口输入

x=[数据x1,数据x2,...,数据xn]

y=[数据y1,数据y2,...,数据yn]

当数据较多时,可以从excel,txt等文件中导入。

把数据存入工作空间后,在命令窗口中输入cftool,回车运行。

在这个拟合工具窗口的左边,选择变量,即分别选择x,y。

选择拟合的曲线类型,一般是线性拟合,高斯曲线,平滑曲线等,根据需要选择。

选择完后会自动完成拟合,并且给出拟合函数表达式。

program dataread

implicit none

integer::I,J,K

integer::Mx1,Mx2,N1,N2

character(len=20)::file1,file2,file3

character ans

real,dimension(:),allocatable::data1,data2

file1="1.txt"

file2="2.txt"

file3="3.txt"

open(11,file= trim(file1),status="old",err=998)

open(12,file= trim(file2),status="old",err=998)

open(13,file= trim(file3))

Mx1=0

N1=0

do

read(11,*,end=22)I

write(*,*)"1",I

if (Mx1<I) Mx1=I

N1=N1+1

enddo

22 Mx2=0

N2=0

do

read(12,*,end=23)I

write(*,*)"2",I

if (Mx2<I) Mx2=I

N2=N2+1

enddo

if(N1.ne.N2) then

write(*,*)"Data Numbers in two files are not the same, do you still wanna continue?(Y/N)"

read(*,*)ans

if(ans.eq."N") stop " Sorry, merge data can not be finished."

endif

23allocate(data1(N1),data2(N2))

rewind 11

rewind 12

do I=1,min(N1,N2)

read(11,*)J,data1(I)

read(12,*)K,data2(I)

if(J.ne.K) then

write(*,*) "Warning, numbers are not the same in two files"

endif

write(13,"(2F10.3)")data1(I),data2(I)

enddo

goto 999

998 stop "File can not be found!"

999 stop "Normal End"

end

由于不是很了解数据到底是什么样的,所以在写程序的时候并没有前面编号不一致的情况,但是扩展性还是留下了,那个Mx1和Mx2目的就是为了防止楼主万一要拓展,要求用编号控制对应的数字或者编号不是按照对应顺序的。反正这个代码是基本能实现楼主的要求了。如果1和2文件中的数字个数不一致的话,程序会提醒并询问是否继续,要是继续的话就按照个数最小的那个文件个数来排序。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11023597.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-13
下一篇 2023-05-13

发表评论

登录后才能评论

评论列表(0条)

保存