260 likes | 417 Views
数据的输入与输出. 数据的输入. 直接输入. 利用 M 文件的形式输入数据: 例如: xlsread( ‘ c:matlabworkdata.xls ’ ) 在指定位置读取 excel 文件 data.xls 。. 利用 load 命令读入数据 : 在 Matlab 工作区中读取 纯文本文件 ,创建一个与文件名相同的变量,该变量表示的矩阵即为文件中数据组成的矩阵。. load 文件名 .doc load 文件名 .txt. 数据的输入. d=xlsread('ddata.xls');
E N D
数据的输入 • 直接输入 • 利用M文件的形式输入数据: 例如: xlsread(‘c:\matlab\work\data.xls’) 在指定位置读取excel文件 data.xls。 • 利用 load 命令读入数据: 在Matlab工作区中读取纯文本文件,创建一个与文件名相同的变量,该变量表示的矩阵即为文件中数据组成的矩阵。 load 文件名.doc load 文件名.txt
数据的输入 • d=xlsread('ddata.xls'); plotgriddata(d(:,1),d(:,2),d(:,3)) ddata.xls 见右表:
数据的输入 • 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文件数据画曲面图。
Matlab 文件操作 • Matlab 文件操作介绍 • 文件操作是一种重要的输入输出方式,Matlab提供了一系列输入输出函数,专门用于文件操作。 • Matlab中的输入输出函数是以C语言标准库函数中的输入输出函数为基础开发的,所以这些函数与C语言的输入输出函数相类似。 • Matlab文件操作主要有三个步骤:首先打开文件,然后对文件进行读写操作,最后要关闭文件。
文件的打开与关闭 • 文件的打开 fid=fopen(文件名,打开方式) 其中文件名用字符串形式,常见的打开方式有:
文件的打开(续) • fid为文件句柄,其它函数可以用它对该文件进行操作。如果句柄值大于0,则表示文件打开成功;若打开失败,fid的返回值为-1。 • 有两个标准代码文件,不需打开就可以直接使用,分别为:fid=1标准输出文件,fid=2标准错误文件。 • 文件有两种格式:二进制文件(b)和文本文件(t)。 fid=fopen(’output.txt’,’w+’);
文件的关闭:fclose status=fclose(fid); 其中fid为所要关闭的文件的句柄,status为关闭文件的返回代码,若成功则为0,否则为-1。
文本文件的写入:fprintf count=fprintf(fid,format,A) 将矩阵 A 按指定的格式写入文本文件;若省略 fid,则表示在屏幕上输出;format通常用%开头。
文本文件的写入(续) format中还可以使用escape character:
例:将一个平方根写入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);
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
例: 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);
数据的统计分析 • 基本统计函数
数据的统计分析 • 例:基本统计函数的使用。 解:A=rand(5,4) A1MAX=max(A) A2MAX=max(A1MAX) AMED=median(A) AMEAN=mean(A) ASTD=std(A)
曲线的拟合 • 多项式拟合 • 命令:[p,s]=polyfit(x,y,n) • 功能:对数据组x,y进行多项式拟合,拟合多项式的阶数是n,其中p是多项式的系数矩阵,s为预测误差估计值得矩阵。
多项式拟合 • 例 求以下数据的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
曲线拟合 • 非线性最小二乘拟合 命令:leastsq(‘f’,x0) 功能:做非线性最小二乘拟合,f是M函数文件。 说明:Matlab需要完整安装才能用此命令。
非线性最小二乘拟合 • 用表中的数据拟合 中系数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)
非线性最小二乘拟合 • 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’)
函数插值 • 函数插值是在已知数据之间寻找估计值的过程。 在信号处理和图像处理中,插值是极其常用的方法。 • 插值函数: interp1 一维插值 interp2 二维插值 griddata 栅格数据插值
处的值 ,构造简单函数 作为函数 y=f(x)的近似表达式: ,使 函数插值 • 插值法由实验或测量的方法得到所求函数 y=f(x)在互异点 , 称为插值函数,它常取多项式或分段多项式。与曲线拟合函数不同的是插值函数满足条件:
一维插值 • 一维插值 命令:Y1=interp1(x,y,X1,’method’) 功能:根据已知的数据(x,y),用method方法进行插值, 然后计算X1对应的函数值Y1。 • 说明:x,y是已知的数据向量,其中x应以升序或降序来排;X1是插值点的自变量的坐标向量;’method’是用来选择插值算法的,它可以取:’linear’(双线性插值)、’cubic’(三次插值)、’nearst‘(最近插值)
一维插值 ,用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])
二维插值 • 二维插值 命令:Z1=interp2(x,y,z,X1,Y1,’method’) 功能:根据已知的(x,y,z),用method方法进行插值,然后计算(X1,Y1)对应的函数值Z1。 说明:x,y是已知的原始数据,z是函数值;X1,Y1是插值点的自变量的坐标向量;’method’是用来选择插值算法的,它可以取:’linear’(双线性插值)、’cubic’(三次插值)、’nearst‘(最近插值)
二维插值 • 例:利用二维插值对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)