1 / 26

数据的输入与输出

数据的输入与输出. 数据的输入. 直接输入. 利用 M 文件的形式输入数据: 例如: xlsread( ‘ c:matlabworkdata.xls ’ ) 在指定位置读取 excel 文件 data.xls 。. 利用 load 命令读入数据 : 在 Matlab 工作区中读取 纯文本文件 ,创建一个与文件名相同的变量,该变量表示的矩阵即为文件中数据组成的矩阵。. load 文件名 .doc load 文件名 .txt. 数据的输入. d=xlsread('ddata.xls');

daisy
Download Presentation

数据的输入与输出

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 数据的输入与输出

  2. 数据的输入 • 直接输入 • 利用M文件的形式输入数据: 例如: xlsread(‘c:\matlab\work\data.xls’) 在指定位置读取excel文件 data.xls。 • 利用 load 命令读入数据: 在Matlab工作区中读取纯文本文件,创建一个与文件名相同的变量,该变量表示的矩阵即为文件中数据组成的矩阵。 load 文件名.doc load 文件名.txt

  3. 数据的输入 • d=xlsread('ddata.xls'); plotgriddata(d(:,1),d(:,2),d(:,3)) ddata.xls 见右表:

  4. 数据的输入 • function plotgriddata(x,y,z) • mx=min(x); • Mx=max(x); • my=min(y); • My=max(y); • Nx=length(x); • Ny=length(y); • cx=linspace(mx,Mx,Nx); • cy=linspace(my,My,Ny); • cz=griddata(x,y,z,cx,cy','cubic'); • mesh(cx,cy,cz) 说明:此例直接从外部导入excel文件数据画曲面图。

  5. Matlab 文件操作 • Matlab 文件操作介绍 • 文件操作是一种重要的输入输出方式,Matlab提供了一系列输入输出函数,专门用于文件操作。 • Matlab中的输入输出函数是以C语言标准库函数中的输入输出函数为基础开发的,所以这些函数与C语言的输入输出函数相类似。 • Matlab文件操作主要有三个步骤:首先打开文件,然后对文件进行读写操作,最后要关闭文件。

  6. 文件的打开与关闭 • 文件的打开 fid=fopen(文件名,打开方式) 其中文件名用字符串形式,常见的打开方式有:

  7. 文件的打开(续) • fid为文件句柄,其它函数可以用它对该文件进行操作。如果句柄值大于0,则表示文件打开成功;若打开失败,fid的返回值为-1。 • 有两个标准代码文件,不需打开就可以直接使用,分别为:fid=1标准输出文件,fid=2标准错误文件。 • 文件有两种格式:二进制文件(b)和文本文件(t)。 fid=fopen(’output.txt’,’w+’);

  8. 文件的关闭:fclose status=fclose(fid); 其中fid为所要关闭的文件的句柄,status为关闭文件的返回代码,若成功则为0,否则为-1。

  9. 文本文件的写入:fprintf count=fprintf(fid,format,A) 将矩阵 A 按指定的格式写入文本文件;若省略 fid,则表示在屏幕上输出;format通常用%开头。

  10. 文本文件的写入(续) format中还可以使用escape character:

  11. 例:将一个平方根写入table.txt • a=1:10; • b=[a;sqrt(a)]; • fid=fopen(‘table.txt’,’w’); • fprintf(fid,’table of square root:\n’); • fprintf(fid,’%2.0f %6.4f\n’,b); • fclose(fid);

  12. table of square root: 1 1.0000 2 1.4142 3 1.7321 4 2.0000 5 2.2361 6 2.4495 7 2.6458 8 2.8284 9 3.0000 10 3.1623

  13. 例: x=0:0.1:1; y=[x;exp(x)]; fid=fopen(’output.dat’,’wt’); fprintf(fid,’ x exp(x)\n’); fprintf(fid,’%6.2f %12.8f\n’,y); status=fclose(fid);

  14. 数据的统计分析 • 基本统计函数

  15. 数据的统计分析 • 例:基本统计函数的使用。 解:A=rand(5,4) A1MAX=max(A) A2MAX=max(A1MAX) AMED=median(A) AMEAN=mean(A) ASTD=std(A)

  16. 曲线的拟合 • 多项式拟合 • 命令:[p,s]=polyfit(x,y,n) • 功能:对数据组x,y进行多项式拟合,拟合多项式的阶数是n,其中p是多项式的系数矩阵,s为预测误差估计值得矩阵。

  17. 多项式拟合 • 例 求以下数据的6次拟合多项式。 解:x=0:0.1:1; y=[2.1 2.3 2.5 2.9 3.2 3.3 3.8 4.1 4.9 5.4 5.8]; p=polyfit(x,y,6); pa=poly2str(p,’x’) >>pa= -4.085x^6-31.0143x^5+87.4026x^4-72.6557x^3 +24.3351x^2-0.29986x+2.1086

  18. 曲线拟合 • 非线性最小二乘拟合 命令:leastsq(‘f’,x0) 功能:做非线性最小二乘拟合,f是M函数文件。 说明:Matlab需要完整安装才能用此命令。

  19. 非线性最小二乘拟合 • 用表中的数据拟合 中系数t,k,并画出图像。 解:令x(1)=t, x(2)=k 1、建立函数文件 ct.m function y=ct(x) t=[0.25 0.5 1 1.5 2 3 4 6 8]; c=[19.21 18.15 15.36 14.10 12.98 9.32 7.45 5.24 3.01]; y=c-x(1)*exp(-x(2)*t)

  20. 非线性最小二乘拟合 • 2、建立命令文件 exam73.m x0=[10,0.5]; t=[0.25 0.5 1 1.5 2 3 4 6 8]; c=[19.21 18.15 15.36 14.10 12.98 9.32 7.45 5.24 3.01]; x=leastsq(‘ct’,x0) %新版用lsqcurvefit tt=0:.2:8; yy=x(1).*exp(-x(2).*tt); plot(tt,yy,t,c,’rp’)

  21. 函数插值 • 函数插值是在已知数据之间寻找估计值的过程。 在信号处理和图像处理中,插值是极其常用的方法。 • 插值函数: interp1 一维插值 interp2 二维插值 griddata 栅格数据插值

  22. 处的值 ,构造简单函数 作为函数 y=f(x)的近似表达式: ,使 函数插值 • 插值法由实验或测量的方法得到所求函数 y=f(x)在互异点 , 称为插值函数,它常取多项式或分段多项式。与曲线拟合函数不同的是插值函数满足条件:

  23. 一维插值 • 一维插值 命令:Y1=interp1(x,y,X1,’method’) 功能:根据已知的数据(x,y),用method方法进行插值, 然后计算X1对应的函数值Y1。 • 说明:x,y是已知的数据向量,其中x应以升序或降序来排;X1是插值点的自变量的坐标向量;’method’是用来选择插值算法的,它可以取:’linear’(双线性插值)、’cubic’(三次插值)、’nearst‘(最近插值)

  24. 一维插值 ,用11个节点作三种插值, • 例:对 比较结果。 解:x1=-5:10/(11-1):5; y1=1./(1+x.^2); x=-5:0.5:5; y2=interp1(x1,y1,x,’linear’); y3=interp1(x1,y1,x,’spine’); y4=interp1(x1,y1,x,’nearst’); axis([-5 5 -0.4 1.6])

  25. 二维插值 • 二维插值 命令:Z1=interp2(x,y,z,X1,Y1,’method’) 功能:根据已知的(x,y,z),用method方法进行插值,然后计算(X1,Y1)对应的函数值Z1。 说明:x,y是已知的原始数据,z是函数值;X1,Y1是插值点的自变量的坐标向量;’method’是用来选择插值算法的,它可以取:’linear’(双线性插值)、’cubic’(三次插值)、’nearst‘(最近插值)

  26. 二维插值 • 例:利用二维插值对peaks 函数进行插值。 解:[x,y]=meshgrid(-3:0.25:3); z=peaks(x,y); [x1,y1]=meshgrid(-3:0.125:3); z1=interp2(x,y,z,x1,y1); mesh(x1,y1,z1)

More Related