matlab关于excel的相关操作

matlab关于excel的相关操作
matlab关于excel的相关操作

一、matlab读取excel数据

y=xlsread('0.3C-20to50dischargevoltage.xlsx','sheet1','c2:c20')

二、matlab 读入excel 小数位数丢失问题

一)如果要在matlab 命令提示符下显示更多有效位数,可以执行format long g 或

format long e

还有很多显示的格式,详情参见format 函数的帮助

(二)也可以用vpa(A,N),N 为显示的数字位数

第一种无法精确控制小数位数,只能是5,10,15

第二种可以精确控制小数位数,只是速度很慢,不适用大矩阵问题

三、matlab 将数据保存在excel 中的操作

%xlswrite('文件存盘位置\文件名字(自己想取的文件名).xls',在matlab 工作窗口中的数组)%例如:将数组A 存盘到d 盘的003文件夹xlswrite('d:\003.xls',A)

稍微复杂些:bb=[1,2,3,4,5,6];cc=[7,8,9,10,11,12];xlswrite('test.xlsx',bb','Sheet2','B1:B6')xlswrite('test.xlsx',cc','Sheet2','C1:C6')

bb=[1,2,3,4,5,6];cc=[7,8,9,10,11,12];xlswrite('test.xlsx',bb','Sheet2','B')xlswrite('test.xlsx',cc','Sheet2','C')与上面程序的效果一样

PS :如果每次都要存入不同的文件,需要每次修改程序中要保存的文件名

Office2007必须用

xlsx,office2000或2003用xls,否则无法打开

四、matlab 如何多开几个M 编辑窗口

窗口右上角有一个箭头,点一下就可以了。

五、matlab 中对矩阵排序的问题

MATLAB 中的排序函数

(2011-01-3012:51:37)

转载原文

标签:转载

分类:Matlab

原文地址:MATLAB 中的排序函数作者:beer

看全英文帮助没看懂。sort 函数其实就是个排序函数。

============================================================

sort(A)若A 是向量不管是列还是行向量,默认都是对A 进行升序排列。sort(A)是默认的升序,而sort(A,'descend')是降序排序。sort(A)若A 是矩阵,默认对A 的各列进行升序排列

sort(A,dim)

dim=1时等效sort(A)

dim=2时表示对A中的各行元素升序排列

看下面的例子

>>A=magic(3)

A=

816

357

492

>>sort(A)

ans=

312

456

897

>>sort(A,1)

ans=

312

456

897

>>sort(A,2)

ans=

168

357

249

===================

Matlab中给一维向量排序是使用sort函数:sort(A),排序是按升序进行的,其中A为待排序的向量;若欲保留排列前的索引,则可用[sA,index]=sort(A),排序后,sA是排序好的向量,index是向量sA中对A的索引。索引使排列逆运算成为可能。

事实上,这里A≡sA(index),[A恒等于sA(index)],这个结论确实很奇妙,而且很有用。不信你排序之后试下键入命令sA(index),看看得到的是不是就是排列前的A呢。

=====================

在Matlab中排序某个向量(一维)时,可以使用sort(A),其中A为待排序的向量,如果仅是用来排序A,那么直接使用sort (A)即可,如果排序后还需要保留原来的索引可以用返回值,即[B,ind]=sort(A),计算后,B是A排序后的向量,A保持不变,ind 是B中每一项对应于A中项的索引。排序是安升序进行的。

在Matlab中,访问矩阵中的元素,一维用A(1)访问向量A的第一个元素;(下标从1开始);二维用A(1,2)访问A中第一行,第二列的元素。

降序排列不需要这么麻烦,只需要这样就可以了

sort(A,'descend')

七、MATLAB中的插值、拟合与查表

插值法是实用的数值方法,是函数逼近的重要方法。在生产和科学实验中,自变量x与因变量y的函数y=f(x)的关系式有时不能直接写出表达式,而只能得到函数在若干个点的函数值或导数值。当要求知道观测点之外的函数值时,需要估计函数值在该点的值。

如何根据观测点的值,构造一个比较简单的函数y=φ(x),使函数在观测点的值等于已知的数值或导数值。用简单函数y=φ(x)在点x处的值来估计未知函数y=f(x)在x点的值。寻找这样的函数φ(x),办法是很多的。φ(x)可以是一个代数多项式,或是三角多项式,也可以是有理分式;φ(x)可以是任意光滑(任意阶导数连续)的函数或是分段函数。函数类的不同,自然地有不同的逼近效果。在许多应用中,通常要用一个解析函数(一、二元函数)来描述观测数据。

根据测量数据的类型:

1.测量值是准确的,没有误差。

2.测量值与真实值有误差。

这时对应地有两种处理观测数据方法:

1.插值或曲线拟合。

2.回归分析(假定数据测量是精确时,一般用插值法,否则用曲线拟合)。MATLAB中提供了众多的数据处理命令。有插值命令,有拟合命令,有查表命令。2.2.1插值命令

命令1interp1

功能一维数据插值(表格查找)。该命令对数据点之间计算内插值。它找出一元

函数f(x)在中间点的数值。其中函数f(x)由所给数据决定。各个参量之间的关系

示意图为图2-14。

图2-14数据点与插值点关系示意图

格式yi=interp1(x,Y,xi)%返回插值向量yi,每一元素对应于参量xi,同时由向量x与Y的内插值决定。参量x指定数据Y的点。若Y为一矩阵,则按Y的每列计算。yi是阶数为length(xi)*size(Y,2)的输出矩阵。

yi=interp1(Y,xi)%假定x=1:N,其中N为向量Y的长度,或者为矩阵Y的行数。

yi=interp1(x,Y,xi,method)%用指定的算法计算插值:

’nearest’:最近邻点插值,直接完成计算;

’linear’:线性插值(缺省方式),直接完成计算;

’spline’:三次样条函数插值。对于该方法,命令interp1调用函数spline、ppval、mkpp、umkpp。这些命令生成一系列用于分段多项式操作的函数。命令spline用它们执行三次样条函数插值;

’pchip’:分段三次Hermite插值。对于该方法,命令interp1调用函数pchip,用于对向量x与y执行分段三次内插值。该方法保留单调性与数据的外形;

’cubic’:与’pchip’操作相同;

’v5cubic’:在MATLAB 5.0中的三次插值。

对于超出x范围的xi的分量,使用方法’nearest’、’linear’、’v5cubic’

的插值算法,相应地将返回NaN。对其他的方法,interp1将对超出的分量执行外

插值算法。

yi=interp1(x,Y,xi,method,'extrap')%对于超出x范围的xi中的分量将执行

特殊的外插值法extrap。

yi=interp1(x,Y,xi,method,extrapval)%确定超出x范围的xi中的分量的外插值extrapval,其值通常取NaN或0。

例2-31

>>x=0:10;y=x.*sin(x);

>>xx=0:.25:10;yy=interp1(x,y,xx);

>>plot(x,y,'kd',xx,yy)

插值图形

图2-15一元函数插值图形

例2-32

>>year=1900:10:2010;

>>product=[75.99591.972105.711123.203131.669150.697179.323203.212 226.505249.633256.344267.893];

>>p1995=interp1(year,product,1995)

>>x=1900:1:2010;

>>y=interp1(year,product,x,'pchip');

>>plot(year,product,'o',x,y)

插值结果为:

p1995=

252.9885

插值图形为图2-16。

图2-16离散数据的一维插值图

命令2interp2

功能二维数据内插值(表格查找)

格式ZI=interp2(X,Y,Z,XI,YI)%返回矩阵ZI,其元素包含对应于参量XI与YI (可以是向量、或同型矩阵)的元素,即Zi(i,j)←[Xi(i,j),yi(i,j)]。用户可以输入行向量和列向量Xi与Yi,此时,输出向量Zi与矩阵meshgrid(xi,yi)是同型的。同时取决于由输入矩阵X、Y与Z确定的二维函数Z=f(X,Y)。参量X与Y必须是单调的,且相同的划分格式,就像由命令meshgrid生成的一样。若Xi与Yi中有在X与Y范围之外的点,则相应地返回nan(Not a Number)。

ZI=interp2(Z,XI,YI)%缺省地,X=1:n、Y=1:m,其中[m,n]=size(Z)。再按第一种情形进行计算。

ZI=interp2(Z,n)%作n次递归计算,在Z的每两个元素之间插入它们的二维插值,这样,Z的阶数将不断增加。interp2(Z)等价于interp2(z,1)。

ZI=interp2(X,Y,Z,XI,YI,method)%用指定的算法method计算二维插值:

’linear’:双线性插值算法(缺省算法);

’nearest’:最临近插值;

’spline’:三次样条插值;

’cubic’:双三次插值。

例2-33:

>>[X,Y]=meshgrid(-3:.25:3);

>>Z=peaks(X,Y);

>>[XI,YI]=meshgrid(-3:.125:3);

>>ZZ=interp2(X,Y,Z,XI,YI);

>>surfl(X,Y,Z);hold on;

>>surfl(XI,YI,ZZ+15)

>>axis([-33-33-520]);shading flat >>hold off

插值图形为图2-17。

例2-34

>>years=1950:10:1990;

>>service=10:10:30;

>>wage=[150.697199.592187.625 179.323195.072250.287

203.212179.092322.767

226.505153.706426.730

249.633120.281598.243];

>>w=interp2(service,years,wage,15,1975)

插值结果为:

w=

190.6288

命令3interp3

功能三维数据插值(查表)

格式VI=interp3(X,Y,Z,V,XI,YI,ZI)%找出由参量X,Y,Z决定的三元函数

V=V(X,Y,Z)在点(XI,YI,ZI)的值。参量XI,YI,ZI是同型阵列或向量。若向量参量XI,YI,ZI是不同长度,不同方向(行或列)的向量,这时输出参量VI与Y1,Y2,Y3为同型矩阵。其中Y1,Y2,Y3为用命令meshgrid(XI,YI,ZI)生成的同型阵列。若插值点(XI,YI,ZI)中有位于点(X,Y,Z)之外的点,则相应地返回特殊变量值NaN。

VI=interp3(V,XI,YI,ZI)%缺省地,X=1:N,Y=1:M,Z=1:P,其中,[M,N,P]=size(V),再按上面的情形计算。

VI=interp3(V,n)%作n次递归计算,在V的每两个元素之间插入它们的三维插值。这样,V的阶数将不断增加。interp3(V)等价于interp3(V,1)。

VI=interp3(…,method)%用指定的算法method作插值计算:

‘linear’:线性插值(缺省算法);

‘cubic’:三次插值;

‘spline’:三次样条插值;

‘nearest’:最邻近插值。

说明在所有的算法中,都要求X,Y,Z是单调且有相同的格点形式。当X,Y,Z是等距且单调时,用算法’*linear’,’*cubic’,’*nearest’,可得到快速插值。

例2-35

>>[x,y,z,v]=flow(20);

>>[xx,yy,zz]=meshgrid(.1:.25:10,-3:.25:3,-3:.25:3);

>>vv=interp3(x,y,z,v,xx,yy,zz);

>>slice(xx,yy,zz,vv,[69.5],[12],[-2.2]);shading interp;colormap cool

插值图形为图2-18。

图2-18三维插值图

命令4interpft

功能用快速Fourier算法作一维插值

格式y=interpft(x,n)%返回包含周期函数x在重采样的n个等距的点的插值y。若length(x)=m,且x有采样间隔dx,则新的y的采样间隔dy=dx*m/n。注意的是必须n≥m。若x为一矩阵,则按x的列进行计算。返回的矩阵y有与x相同的列数,但有n行。

y=interpft(x,n,dim)%沿着指定的方向dim进行计算

命令5griddata

功能数据格点

格式ZI=griddata(x,y,z,XI,YI)%用二元函数z=f(x,y)的曲面拟合有不规则的数据向量x,y,z。griddata将返回曲面z在点(XI,YI)处的插值。曲面总是经过这些数据点(x,y,z)的。输入参量(XI,YI)通常是规则的格点(像用命令meshgrid 生成的一样)。XI可以是一行向量,这时XI指定一有常数列向量的矩阵。类似地,YI可以是一列向量,它指定一有常数行向量的矩阵。

[XI,YI,ZI]=griddata(x,y,z,xi,yi)%返回的矩阵ZI含义同上,同时,返回的矩阵XI,YI是由行向量xi与列向量yi用命令meshgrid生成的。

[…]=griddata(…,method)%用指定的算法method计算:

‘linear’:基于三角形的线性插值(缺省算法);

‘cubic’:基于三角形的三次插值;

‘nearest’:最邻近插值法;

‘v4’:MATLAB4中的griddata算法。

命令6spline

功能三次样条数据插值

格式yy=spline(x,y,xx)%对于给定的离散的测量数据x,y(称为断点),要寻

找一个三项多项式,以逼近每对数据(x,y)点间的曲线。过两点和

只能确定一条直线,而通过一点的三次多项式曲线有无穷多条。为使通过中间断点的三次多项式曲线具有唯一性,要增加两个条件(因为三次多项式有4个系数):

1.三次多项式在点处有:;

2.三次多项式在点处有:;

3.p(x)在点处的斜率是连续的(为了使三次多项式具有良好的解析性,加上的条件);

4.p(x)在点处的曲率是连续的;

对于第一个和最后一个多项式,人为地规定如下条件:

①.

②.

上述两个条件称为非结点(not-a-knot)条件。综合上述内容,可知对数据拟合的三次样条函数p(x)是一个分段的三次多项式:

,其中每段都是三次多项式。

该命令用三次样条插值计算出由向量x与y确定的一元函数y=f(x)在点xx处的值。若参量y是一矩阵,则以y的每一列和x配对,再分别计算由它们确定的函数在点xx处的值。则yy是一阶数为length(xx)*size(y,2)的矩阵。

pp=spline(x,y)%返回由向量x与y确定的分段样条多项式的系数矩阵pp,它可用于命令ppval、unmkpp的计算。

例2-36

对离散地分布在y=exp(x)sin(x)函数曲线上的数据点进行样条插值计算:

>>x=[024581212.817.219.920];y=exp(x).*sin(x);

>>xx=0:.25:20;

>>yy=spline(x,y,xx);

>>plot(x,y,'o',xx,yy)

插值图形结果为图2-19。

图2-19三次样条插值

命令7interpn

功能n维数据插值(查表)

格式VI=interpn(X1,X2,,…,Xn,V,Y1,Y2,…,Yn)%返回由参量X1,X2,…,Xn,V 确定的n元函数V=V(X1,X2,…,Xn)在点(Y1,Y2,…,Yn)处的插值。参量Y1,Y2,…,Yn 是同型的矩阵或向量。若Y1,Y2,…,Yn是向量,则可以是不同长度,不同方向(行或列)的向量。它们将通过命令ndgrid生成同型的矩阵,再作计算。若点

(Y1,Y2,…,Yn)中有位于点(X1,X2,…,Xn)之外的点,则相应地返回特殊变量NaN。

VI=interpn(V,Y1,Y2,…,Yn)%缺省地,X1=1:size(V,1),X2=1:size(V,2),…,Xn=1:size(V,n),再按上面的情形计算。

VI=interpn(V,ntimes)%作ntimes次递归计算,在V的每两个元素之间插入它们的n维插值。这样,V的阶数将不断增加。interpn(V)等价于interpn(V,1)。

VI=interpn(…,method)%用指定的算法method计算:

‘linear’:线性插值(缺省算法);

‘cubic’:三次插值;

‘spline’:三次样条插值法;

‘nearest’:最邻近插值算法。

命令8meshgrid

功能生成用于画三维图形的矩阵数据。

格式[X,Y]=meshgrid(x,y)将由向量x,y(可以是不同方向的)指定的区域[min(x),max(x),min(y),max(y)]用直线x=x(i),y=y(j)(i=1,2,…,length(x),j=1,2,…,length(y))进行划分。这样,得到了length(x)*length(y)个点,这些点的横坐标用矩阵X表示,X的每个行向量与向量x相同;这些点的纵坐标用矩阵Y表示,Y的每个列向量与向量y相同。其中X,Y可用于计算二元函数z=f(x,y)与三维图形中xy平面矩形定义域的划分或曲面作图。

[X,Y]=meshgrid(x)%等价于[X,Y]=meshgrid(x,x)。

[X,Y,Z]=meshgrid(x,y,z)%生成三维阵列X,Y,Z,用于计算三元函数v=f(x,y,z)或三维容积图。

例2-37

[X,Y]=meshgrid(1:3,10:14)

计算结果为:

X=

123

123

123

123

123

Y=

101010

111111

121212

131313

141414

命令9ndgrid

功能生成用于多维函数计算或多维插值用的阵列

格式[X1,X2,…,Xn]=ndgrid(x1,x2,…,xn)%把通过向量x1,x2,x3…,xn指定的区域转换为数组x1,x2,x3,…,xn。这样,得到了length(x1)*

length(x2)*…*length(xn)个点,这些点的第一维坐标用矩阵X1表示,X1的每个第一维向量与向量x1相同;这些点的第二维坐标用矩阵X2表示,X2的每个第二维向量与向量x2相同;如此等等。其中X1,X2,…,Xn可用于计算多元函数

y=f(x1,x2,…,xn)以及多维插值命令用到的阵列。

[X1,X2,...,Xn]=ndgrid(x)%等价于[X1,X2,...,Xn]=ndgrid(x,x, (x)

2.2.2查表命令

命令1table1

功能一维查表

格式Y=table1(TAB,X0)%返回用表格矩阵TAB中的行线性插值元素,对X0(TAB 的第一列查找X0)进行线性插值得到的结果Y。矩阵TAB是第一列包含关键值,而其他列包含数据的矩阵。X0中的每一元素将相应地返回一线性插值行向量。矩阵TAB的第一列必须是单调的。

例2-38

>>tab=[(1:4)'hilb(4)]

>>y=table1(tab,[12.33.64])

查表结果为:

tab=

1.00001.00000.50000.33330.2500

2.00000.50000.33330.25000.2000

3.00000.33330.25000.20000.1667

4.00000.25000.20000.16670.1429

Warning:TABLE1is obsolete and will be removed in future https://www.360docs.net/doc/7216723893.html,e INTERP1or INTERP1Q instead.

>In D:\MATLABR12\toolbox\matlab\polyfun\table1.m at line31

y=

1.00000.50000.33330.2500

0.45000.30830.23500.1900

0.28330.22000.18000.1524

0.25000.20000.16670.1429

由上面结果可知,table1是一将要废弃的命令。

命令2table2

功能二维查表

格式Z=table1(TAB,X0,Y0)%返回用表格矩阵TAB中的行与列交叉线性线性插值元素,对X0(TAB的第一列查找X0)进行线性插值,对Y0(TAB的第一行查找Y0)进行线性插值,对上述两个数值进行交叉线性插值,得到的结果为Z。矩阵TAB是第一列与第一行列都包含关键值,而其他的元素包含数据的矩阵。TAB(1,1)的关键值将被忽略。[X0,Y0]中的每点将相应地返回一线性插值。矩阵TAB的第一行与第一列必须是单调的。

例2-39

>>tab=[NaN1:4;(1:4)'magic(4)]

>>y=table2(tab,[233.7],[1.32.34])

查表的结果为:

tab=

NaN1234

1162313

2511108

397612

4414151

Warning:TABLE2is obsolete and will be removed in future https://www.360docs.net/doc/7216723893.html,e INTERP2instead.

>In D:\MATLABR12\toolbox\matlab\polyfun\table2.m at line24

Warning:TABLE1is obsolete and will be removed in future https://www.360docs.net/doc/7216723893.html,e INTERP1or INTERP1Q instead.

>In D:\MATLABR12\toolbox\matlab\polyfun\table1.m at line31

In D:\MATLABR12\toolbox\matlab\polyfun\table2.m at line29

Warning:TABLE1is obsolete and will be removed in future https://www.360docs.net/doc/7216723893.html,e INTERP1or INTERP1Q instead.

>In D:\MATLABR12\toolbox\matlab\polyfun\table1.m at line31

In D:\MATLABR12\toolbox\matlab\polyfun\table2.m at line31

y=

6.800010.70008.0000

8.40006.700012.0000

7.420012.02004.3000

由上面的结果可知,table2是将要废弃的命令。

八、Matlab CFTool使用简介:

单一变量的曲线逼近

Matlab有一个功能强大的曲线拟合工具箱cftool,使用方便,能实现多种类型的线性、非线性曲线拟合。下面结合我使用的Matlab R2007b来简单介绍如何使用这个工具箱。

假设我们要拟合的函数形式是y=A*x*x+B*x,且A>0,B>0。

1、在命令行输入数据:

》x=[你的X轴数据];

》y=[你的Y轴数据];

》cftool

可以将上面三个行建立一个M文件,以便后面进行数据拟合时可以直接使用,点击运行即可进入曲线拟合工具箱界面“Curve Fitting tool”

(1)点击“Data”按钮,弹出“Data”窗口;

(2)利用X data和Y data的下拉菜单读入数据x,y,可修改数据集名“Data set name”,然后点击“Create data set”按钮,退出“Data”窗口,返回工具箱界面,这时会自动画出数据集的曲线图;

(3)点击“Fitting”按钮,弹出“Fitting”窗口;

(4)点击“New fit”按钮,可修改拟合项目名称“Fit name”,通过“Data set”下拉菜单选择数据集,然后通过下拉菜单“Type of fit”选择拟合曲线的类型,工具箱提供的拟合类型有:

?Custom Equations:用户自定义的函数类型

?Exponential:指数逼近,有2种类型,a*exp(b*x)、a*exp(b*x)+c*exp(d*x)?Fourier:傅立叶逼近,有7种类型,基础型是a0+a1*cos(x*w)+b1*sin(x*w)

?Gaussian:高斯逼近,有8种类型,基础型是a1*exp(-((x-b1)/c1)^2)

?Interpolant:插值逼近,有4种类型,linear、nearest neighbor、cubic spline、shape-preserving

?Polynomial:多形式逼近,有9种类型,linear~、quadratic~、cubic~、4-9th degree ~

?Power:幂逼近,有2种类型,a*x^b、a*x^b+c

?Rational:有理数逼近,分子、分母共有的类型是linear~、quadratic~、cubic~、4-5th degree~;此外,分子还包括constant型

?Smoothing Spline:平滑逼近(翻译的不大恰当,不好意思)

?Sum of Sin Functions:正弦曲线逼近,有8种类型,基础型是a1*sin(b1*x+c1)?Weibull:只有一种,a*b*x^(b-1)*exp(-a*x^b)

选择好所需的拟合曲线类型及其子类型,并进行相关设置:

——如果是非自定义的类型,根据实际需要点击“Fit options”按钮,设置拟合算法、修改待估计参数的上下限等参数;

——如果选Custom Equations,点击“New”按钮,弹出自定义函数等式窗口,有“Linear Equations线性等式”和“General Equations构造等式”两种标签。

在本例中选Custom Equations,点击“New”按钮,选择“General Equations”

标签,输入函数类型y=a*x*x+b*x,设置参数a、b的上下限,然后点击OK。

(5)类型设置完成后,点击“Apply”按钮,就可以在Results框中得到拟合结果。

下面是一个实例:

建立M文件,COPY下面内容至M文件中:(这是真实实验数据,比较长,直接COPY就可以,copy至“cftool”)

clc

clear all

x=[0102030405060708090100110120130140150160170180 190200210220230240250260270280290300310320330340350360370 380390400410420430440450460470480490500510520530540550560 570580590600610620630640650660670680690700710720730740750 760770780790800810820830840850860870880890900910920930940 9509609709809901000101010201030104010501060 1070108010901100111011201130114011501160 1170118011901200121012201230124012501260 1270128012901300131013201330134013501360 1370138013901400141014201430144014501460 1470148014901500151015201530154015501560 1570158015901600161016201630164016501660 1670168016901700171017201730174017501760 1770178017901800181018201830184018501860 1870188018901900191019201930194019501960 1970198019902000201020202030204020502060 2070208020902100211021202130214021502160 2170218021902200221022202230224022502260 2270228022902300231023202330234023502360 2370238023902400241024202430244024502460 2470248024902500251025202530254025502560 2570258025902600261026202630264026502660 2670268026902700271027202730274027502760 2770278027902800281028202830284028502860 2870288028902900291029202930294029502960 2970298029903000301030203030304030503060 3070308030903100311031203130314031503160 3170318031903200321032203230324032503260 3270328032903300331033203330334033503360

3370338033903400341034203430344034503460 3470348034903500351035203530354035503560 3570358035903600361036203630364036503660 3670368036903700371037203730374037503760 3770378037903800381038203830384038503860 3870388038903900391039203930394039503960 3970398039904000401040204030404040504060 4070408040904100411041204130414041504160 4170418041904200421042204230424042504260 4270428042904300431043204330434043504360 4370438043904400441044204430444044504460 4470448044904500451045204530454045504560 4570458045904600461046204630464046504660 4670468046904700471047204730474047504760 4770478047904800481048204830484048504860 4870488048904900491049204930494049504960 4970498049905000501050205030504050505060 5070508050905100511051205130514051505160 5170518051905200521052205230524052505260 5270528052905300531053205330534053505360 5370538053905400541054205430544054505460 5470548054905500551055205530554055505560 5570558055905600561056205630564056505660 5670568056905700571057205730574057505760 5770578057905800581058205830584058505860 5870588058905900591059205930594059505960 5970598059906000601060206030604060506060 6070608060906100611061206130614061506160 6170618061906200621062206230624062506260 6270628062906300631063206330634063506360 6370638063906400641064206430644064506460 6470648064906500651065206530654065506560 6570658065906600661066206630664066506660 6670668066906700671067206730674067506760 6770678067906800681068206830684068506860 6870688068906900691069206930694069506960 6970698069907000701070207030704070507060 7070708070907100711071207130714071507160 7170718071907200721072207230724072507260 7270728072907300731073207330734073507360 7370738073907400741074207430744074507460 7470748074907500751075207530754075507560 7570758075907600761076207630764076507660 7670768076907700771077207730774077507760 7770778077907800781078207830784078507860 7870788078907900791079207930794079507960 7970798079908000801080208030804080508060 8070808080908100811081208130814081508160 8170818081908200821082208230824082508260 82708280829083008310832083308340];

y=[3.934 3.893 3.878 3.873 3.862 3.857 3.852 3.847 3.836 3.831 3.831 3.826 3.821 3.816 3.816 3.811 3.811 3.805

3.805 3.83.83.795 3.795 3.795 3.79 3.795 3.79 3.79 3.785 3.79 3.785 3.785 3.785 3.78 3.78 3.78 3.78 3.774 3.774 3.774 3.774 3.774 3.774 3.769 3.769 3.769 3.769 3.769

3.769 3.769 3.769 3.769 3.769 3.769 3.769 3.764 3.764

3.764 3.764 3.764 3.764 3.764 3.764 3.764 3.764 3.764

3.764 3.759 3.759 3.759 3.759 3.759 3.759 3.759 3.759

3.759 3.759 3.759 3.759 3.759 3.759 3.759 3.759 3.754

3.759 3.759 3.754 3.754 3.754 3.754 3.754 3.754 3.754

3.754 3.754 3.754 3.754 3.754 3.749 3.754 3.754 3.749

3.749 3.754 3.749 3.754 3.754 3.749 3.754 3.749 3.754

3.749 3.754 3.749 3.749 3.749 3.749 3.749 3.749 3.749

3.749 3.749 3.749 3.749 3.749 3.744 3.749 3.749 3.744

3.744 3.744 3.744 3.744 3.744 3.744 3.744 3.744 3.744

3.738 3.744 3.744 3.744 3.744 3.744 3.744 3.738 3.738

3.738 3.738 3.738 3.738 3.738 3.738 3.738 3.738 3.738

3.738 3.733 3.738 3.733 3.733 3.733 3.733 3.733 3.733

3.733 3.733 3.733 3.733 3.733 3.728 3.728 3.728 3.728

3.728 3.728 3.728 3.728 3.728 3.728 3.728 3.728 3.723

3.728 3.728 3.728 3.728 3.728 3.728 3.723 3.723 3.723

3.718 3.723 3.723 3.723 3.723 3.718 3.723 3.723 3.718

3.718 3.718 3.718 3.718 3.718 3.718 3.718 3.718 3.718

3.718 3.718 3.713 3.718 3.718 3.713 3.713 3.713 3.713

3.713 3.713 3.713 3.713 3.713 3.713 3.713 3.713 3.713

3.713 3.713 3.707 3.713 3.707 3.707 3.707 3.707 3.707

3.707 3.707 3.707 3.707 3.702 3.702 3.702 3.707 3.702

3.702 3.702 3.702 3.702 3.702 3.702 3.702 3.697 3.702

3.697 3.697 3.697 3.697 3.697 3.697 3.697 3.697 3.697

3.692 3.692 3.692 3.692 3.692 3.692 3.692 3.692 3.692

3.687 3.692 3.687 3.692 3.692 3.687 3.687 3.687 3.692

3.687 3.687 3.687 3.687 3.687 3.692 3.687 3.687 3.687

3.687 3.687 3.687 3.682 3.687 3.687 3.682 3.682 3.682

3.682 3.682 3.682 3.682 3.676 3.682 3.676 3.676 3.676

3.676 3.676 3.671 3.671 3.676 3.671 3.671 3.671 3.671

3.671 3.671 3.666 3.671 3.671 3.671 3.666 3.671 3.671

3.671 3.666 3.666 3.666 3.666 3.666 3.666 3.666 3.661

3.661 3.661 3.661 3.661 3.661 3.661 3.661 3.661 3.661

3.656 3.656 3.656 3.656 3.656 3.656 3.651 3.651 3.656

3.651 3.651 3.651 3.651 3.651 3.645 3.651 3.645 3.645

3.645 3.645 3.645 3.645 3.645 3.645 3.645 3.64 3.64

3.645 3.64 3.64 3.64 3.64 3.64 3.64 3.635 3.64 3.635 3.635 3.64 3.635 3.635 3.635 3.635 3.635 3.635 3.635

3.635 3.635 3.63 3.635 3.63 3.63 3.63 3.63 3.63 3.63 3.63 3.63 3.63 3.625 3.63 3.63 3.625 3.625 3.625 3.625 3.625 3.625 3.625 3.625 3.625 3.62 3.62 3.62 3.62 3.62 3.62 3.615 3.615 3.615 3.615 3.615 3.615 3.615 3.609

3.615 3.609 3.609 3.609 3.609 3.609 3.609 3.604 3.609

3.604 3.604 3.604 3.604 3.604 3.604 3.604 3.604 3.604

3.604 3.604 3.604 3.604 3.604 3.599 3.599 3.599 3.599

3.599 3.599 3.599 3.599 3.599 3.599 3.594 3.594 3.594

3.589 3.589 3.594 3.589 3.589 3.589 3.589 3.589 3.589

3.589 3.589 3.584 3.584 3.589 3.584 3.584 3.584 3.584

3.578 3.584 3.584 3.578 3.578 3.578 3.578 3.578 3.578

3.578 3.573 3.573 3.573 3.573 3.573 3.573 3.573 3.568

3.568 3.568 3.568 3.568 3.563 3.563 3.563 3.563 3.563

3.563 3.563 3.563 3.563 3.558 3.558 3.558 3.558 3.558

3.558 3.558 3.553 3.558 3.558 3.553 3.553 3.553 3.553

3.553 3.553 3.547 3.547 3.547 3.547 3.547 3.547 3.547

3.547 3.547 3.547 3.542 3.542 3.542 3.542 3.542 3.542

3.537 3.537 3.537 3.537 3.537 3.537 3.537 3.537 3.532

3.532 3.532 3.532 3.527 3.527 3.527 3.527 3.527 3.527

3.527 3.527 3.527 3.522 3.522 3.522 3.522 3.522 3.522

3.522 3.522 3.522 3.516 3.516 3.516 3.516 3.516 3.516

MATLAB访问excel

MATLAB访问excel

MATLAB作为自动化客户端调用Excel服务器编程项目中最后的功能——打印报告,最终确定使用ActiveX方式访问office,这个应该称之为OLE(对象链接与嵌入)方法。通过MATLAB 调用Excel服务器,可以完成一些非数据对象的交互,比如图片。 在这里演示一下MATLAB与Excel交互的整体过程,当然这里不是报告的内容,这个属于项目的资料了。这里通过简单的图片来表示,实际要做的时候,步骤和这个基本一致,只是过程麻烦些,每一个图片都要调整,然后数据内容调整,单元格格式等等: 先看一下示意的效果:

1.MATLAB打开自动化方法 使用actxserver函数。如下: he = actxserver('Excel.Application'); 上述语句创建excel服务器,句柄值为he,通过he可以访问excel服务器的属性和方法。 在使用中为了方便存储,可以设置默认路径,使用excel服务器的DefaultFilePath属性:

he.DefaultFilePath = 'E:\'; 调试中为了方便观看excel文件内容,可以设置excel服务器的Visible属性,实际调试时可以改为1,调试过后改为0即可: he.Visible = 1; 2.创建工作簿方法 通过excel服务器的属性Workbooks创建工作簿句柄,通过该句柄的方法Add 创建工作簿: hw = he.Workbooks.Add; 然后,继续通过hw的Worksheets属性建立Sheets类句柄: hs = hw.Worksheets; 访问某一sheet的方法即用sheets的Item方法: sheetItem = hs.Item(1); 上面即建立的sheet类句柄,可以通过该句柄访问单一sheet。 3.生成带有图形的Excel,主要是figure位置和格式,粘贴时只能选择单元格,需要精细修饰就要使用下面的方法了。

Matlab 如何读取 Excel 表格数据

? 上一篇: 在VC++程序中输出空心文字下一篇: My ANN program ? Matlab 如何读取 Excel 表格数据 Cyberr @ 2005-03-31 12:44 Subject: Are there any examples that show how to use the ActiveX automation interface to connect MATLAB to Excel? Problem Description I am trying to control Excel from MATLAB using ActiveX. Are there any examples that show how to use the ActiveX automation interface from Excel to do this? Solution: Most of the functionality that you get from ActiveX is dependent on the object model, which the external application implements. Consequently, we are usually unable tp provide much information about the functions that you need to use in the remote application to perform a particular function. We do, however, have an example that shows how to do perform common functions in Excel. We also recommend that you become more familiar with the Excel object model in order to better use Excel's ActiveX automation interface from MATLAB. You can find more information on this interface by selecting the "Microsoft Excel Visual Basic Reference" topic in the Microsoft Excel Help Topic dialog. This topic area contains a searchable description of Excel methods and properties. The following example demonstrates how to insert MATLAB data into Excel. It also shows how to extract some data from Excel into MATLAB. For more information, refer to the individual comments for each code segment. % Open Excel, add workbook, change active worksheet, % get/put array, save, and close % First open an Excel Server Excel = actxserver('Excel.Application'); set(Excel, 'Visible', 1); % Insert a new workbook

Matlab中使用Excel数据

Matlab中使用Excel資料收藏 % Open Excel, add workbook, change active worksheet, % get/put array, save, and close % First open an Excel Server %打開一個Excel操作物件 Excel = actxserver('Excel.Application'); %使Excel物件可見,即打開Excel視窗,實際應用時設置其為不可見的set(Excel, 'Visible', 1); % Insert a new workbook %創建工作本組物件 Workbooks = Excel.Workbooks; %添加一個工作本 Workbook = invoke(Workbooks, 'Add'); % Make the second sheet active %獲取當前活躍工作本的表單組,一個工作本共有3個表單(sheets)Sheets = Excel.ActiveWorkBook.Sheets; %獲取表單組中的一個表單 sheet2 = get(Sheets, 'Item', 2); %啟動該表單 invoke(sheet2, 'Activate'); % Get a handle to the active sheet %獲取當前活躍表單的控制碼 Activesheet = Excel.Activesheet; % Put a MATLAB array into Excel %向表單中寫入資料 A = [1 2; 3 4]; %設置寫到Excel中的範圍 ActivesheetRange = get(Activesheet,'Range','A1:B2'); %寫入 set(ActivesheetRange, 'Value', A); % Get back a range. It will be a cell array, % since the cell range can % contain different types of data. %讀會資料塊 Range = get(Activesheet, 'Range', 'A1:B2');

matlab利用excellink达到在excel中直接画图

matlab excel混合编程MATLAB与 Excel数据连接及绘图 3.1 MATLAB与Excel数据连接 EXCEL和MATLAB在数据显示和数值计算上各有优势,EXCEL是商业运用最广泛的工具,非常直观,但是数值编程比较差,而MA TLAB可以弥补这一点,有时在程序开发上需要将两者结合起来,实现两者之间的优势互补,为此MATLAB提供了EXCEL Link连接工具,实现MA TLAB与EXCEL之间的混合编程。 EXCEL Link是一个在Microsoft Windows环境下实现对Microsoft EXCEL和MATLAB 进行链接的插件。通过对EXCEL和MATLAB 的连接,用户可以在EXCEL的工作空间里,利用EXCEL的宏编程工具,使用MATLAB的数据处理和图形处理功能进行相关操作,同时由EXCEL Link来保证两个工作环境中数据的交换和同步更新。使用EXCEL Link 时,不必脱离EXCEL环境,而是直接在EXCEL工作区或宏操作中调用MATLAB函数。 EXCEL Link允许在MATLAB和EXCEL之间进行数据交换,在两个功能强大的数学处理、分析与表示平台之间建立无缝连接。EXCEL作为一个可视化的数据处理环境是进行数组编辑的最佳选择,而MA TLAB则作为数据分析和可视化的引擎。任何输入到EXCEL环境中的数据都可以直接进入MTA TLAB进行处理,而这一过程完全是“现场”处理的,没有任何中间文件,也不需要进行编程工作。

3.1.1 MATLAB和Excel的接口安装:. Excel Link的安装和和设置 首先,在系统中安装Excel软件。然后安装Matlab和Excel Link,用Matlab安装盘开始安装,选择自定义安装中,在选中组件ExcelLink,如下图所示: 安装完Excel Link后还需要在Excel中进行一些设置后才能使用。 启动Excel,选择菜单“工具”项下的“加载宏”项,弹出如下对话框:

excel中的数据导入matlab中

用Excel Link实现Excel与Matlab混合编程 Excel Link是一个在Windows环境下实现Excel与Matlab进行链接的插件。通过连接Excel 和Matlab,用户可以在Excel工作表空间和宏编程工具中使用Matlab的数值计算,图形处理等功能,不需要脱离Excel环境。同时由Excel Link来保证两个工作环境中的数据交换和同步更新。 1. Excel Link的安装和和设置首先,在系统中安装Excel软件。然后安装Matlab和Excel Link,用Matlab安装盘开始安装,选择自定义安装中,在选中组件ExcelLink,如下图所示:安装完Excel Link后还需要在Excel中进行一些设置后才能使用。启动Excel,选择菜单“工具”项下的“加载宏”项,弹出如下对话框:选中Excel Link项。如果该项不存在,则通过浏览目录,在目录%MATLAB%toolboxexlink下找到excllink.xla文件,如下图示,并确定。选中ExcelLink项并确定后,在Excel中多了一个Excel Link工具条,如下图示: 经过以上的设置后就可以开始使用Excel Link了。 2. ExcelLink连接管理函数 (1) Matlabinit 该函数只能在宏子例程中使用。初始化ExcelLink和启动Matlab进程。只有在MLAutoStart 函数中使用“no”参数,才需要手动使用Matlabinit来初始化ExcelLink和启动Matlab进程,如果使用参数“yes”,则Matlabinit是自动执行的。 使用语法:Matlabinit (2) MLAutoStart 设置自动启动Matlab和ExcelLink。 在工作表中的使用语法: MLAutoStart("yes") MLAutoStart("no") 在宏中的使用语法: MLAutoStart "yes" MLAutoStart "no" 使用“yes”参数,则当Excel启动时,自动启动Matlab和ExcelLink;如果使用参数“no”,则当Excel启动时,不启动Matlab和ExcelLink。如果在此之前它们已经启动,则无任何影响。 (3) MLClose 终止Matlab进程并删除Matlab工作空间的所有变量。并通知Excel,Matlab不再运行。 在工作表中的使用语法: MLClose() 在宏中的使用语法: MLClose (4) MLOpen 启动Matlab进程。如果Matlab进程已经启动,则MLOpen函数不进行任何操作。在使用MLClose关闭Matlab进程后使用MLOpen来重新启动Matlab。 在工作表中的使用语法: MLOpen() 在宏中的使用语法: MLOpen

matlab读取excel数据

matlab读取excel office的表格文件也就是xls文件本质上就是一个二维矩阵,二维矩阵是用来保存数据的最佳方式,所以在日常工作中,我们从其它地方获取的数据通常都被保存为xls格式,但处理数据时,我们却需要把xls文件的数据导入到matlab里进行处理。 如果你只处理一个文件并且只做一次的话,你可以手动来拷贝粘贴,这花费不了你太多时间。如果有很多xls文件,或者你的xls文件的内容可能随时被修改,那么下面的方法可以派上用场。 matlab自身提供了大量的函数,包括读取office文件。其中xlsread和xlswrite就是专门用来读取xls文件里的数据的。这两个函数的使用方法可以直接查看matlab自带的帮助。 xlsread对于纯数据的xls文件支持很完美,也就是说当xls文件里的每个格子都是“数”时,xlsread会直接返回一个实数矩阵。但是通常我们拿到xls文件并不是这样,它的表头多半是描述性文字,它的数据也有可能是文字,有些位置的数据还有可能是缺失的。xlsread 对这样的文件读取无能为力,或者说需要大量的时间去协调数据的位置信息。要是有一个函数,能够按照原有的顺序直接读取所有的单位格数据就好了。当然,这时候返回的矩阵就不能是一个数值矩阵了,它将会是一个cell矩阵,里面的每个元素类型可能不一样。 matlab本身并不提供这个功能,但是另外有一个函数officedoc完美的实现这个功能。这个函数包可以去OfficeDoc官方网站上去下载,解压缩后放到工作路径上即可。使用方法可以查询help officedoc。officedoc是收费函数包,但有免费版本,而且其免费版本可以实现上面我们所说的效果(收费版本主要是可以用来修改office文件)。 例子: 在matlab中读取xls格式的文件内容如应用如下函数: 1.bb=xlsread('c:feature.xls','a0:an40'),其中:c:feature.xls为文件存放的地址,a0:a40为将要读取的单元格的范围.bb为读取的矩阵在MATLAB中的变量名. 2.使用m文件脚本如下: Excel = actxserver('Excel.Application'); set(Excel, 'Visible', 1); Workbooks = Excel.Workbooks; Workbook = invoke(Workbooks, 'Open', [cd,'\feature\ABC.xls']); %% 读取ABC.xls:sheet1 a1(即R1C1)~an40(即R240c40) 范围内的 40by40 矩阵read_excel=ddeinit('excel','ABC.xls:sheet1'); feature1 = ddereq(read_excel, 'R1c1:R40c40'); feature1 %% 关闭ABC.xls invoke(Excel, 'Quit'); delete(Excel); 注意:在使用时将m文件与xls文件存于同一个目录下.另外:sheet1:可以重命名,且读取sheet的名称要和实际存放的名称相同. matlab读取excel,txt文件函数 注意matlab不识别中文,读写的文件中最好不含有中文 excel读取函数xlsread

基于MATLAB的EXCEL数据计算与分析

基于MATLAB的EXCEL数据计算与分析 潜刘方 摘要:再怎么样希望先看摘要,阅读本文需要一定的MATLAB基础知识,不需要excel相关知识。结合本人近期工作上的需要测量计算,想偷懒就选择了利用MATLAB偷懒,于是便有了本文。本文首先利用MATLAB读取数据,计算,将数据写入excel,然后花了很大的精力来根据实际需要画图,最后将图保存在excel所在的文件夹下。这个m文件可谓花了我不少的时间和精力。最后根据m文件的不足(不能将图形输入到excel文档当中),进一步弥补这不足,就有了exlink(也叫excel link),在网上搜索了相关的知识,发现很多关于exlink 的培训,觉得实在可笑,所以就将exlink的使用写的比较详细,以供读者自行分析体会。关键字:MATLAB excel exlink接口 一、前沿 MATLAB是一款应用在各个领域的数学软件,最初叫做矩阵实验室,专用于矩阵的运算,后来的版本再各个领域都得到了很好的应用,比如:通信、电力电子、电机控制、运动控制、计算机控制、自动控制,DSP数字信号处理。但是MATLAB对于数据的处理与可视化是很多软件所不能及的。 EXCEL作为办公必备软件,能对简单数据分析计算与作图分析,但是处理复杂数据显得力不从心,比如三维作图就无法利用EXCEL作出;EXCEL本身的函数远远没有MATLAB 多,MATLAB作为数据有其独特的优势,集成了很多数学函数,包括数据拟合差值等。MATLAB 可以从EXCEL中读取数据,经过相关运算之后又可以将数据写入EXCEL,假如需要重复性的对excel可以利用MATLAB编写函数,每次只要运行MATLAB程序就可以完成,大大节省时间和精力。 另外,MATLAB还有与EXCEL的接口,叫做EXLINK,运用这个接口可以在excel中完成MATLAB函数的调用,还能传送数据给MATLAB,从MATLAB当中读取数据,从MATLAB 当中读取图形,使用方便,操作简单。 二、基于MATLAB的数据分析 数据分析操作流程主要分为三步:第一步,从excel中读取数据;第二部:利用MATLAB 大量函数对数据分析处理;第三步:将分析结果写入excel中。在整个过程中,不需要打开excel软件,操作十分方便,每次操作唯一要做就是修改excel所在的目录及文件名。主要函数如下(具体使用方法可在MATLAB命令窗口输入help+函数名查看):Xlsread从excel中读数据 Xlswrite向excel中邪数据 num2str将数字转换为字符串 strncmp字符串比较 polyfit数据拟合 polyval具体数值代入求值 plot作图

matlab读取txt和excel

Text的读写 1.读文本文件 fid=fopen('matlab3.txt','r') %我已把txt放入matlab默认文件夹 a=fscanf(fid,'%s') 2.写文本文件 fid=fopen('matlab3.txt','a'); a=[1,2,6666,8]; fprintf(fid,'%d',a); fclose(fid); fid1=fopen('matlab3.txt','r'); b=fscanf(fid1,'%s') 注:1)打开文件fid=fopen(文件名,‘打开方式’) 其中fid用于存储文件句柄值,如果返回的句柄值大于0,则说明文件打开成功。文件名用字符串形式,表示待打开的数据文件。常见的打开方式如下:‘r’:只读方式打开文件(默认的方式),该文件必须已存在。 ‘r+’:读写方式打开文件,打开后先读后写。该文件必须已存在。 ‘w’:打开后写入数据。该文件已存在则更新;不存在则创建。 ‘w+’:读写方式打开文件。先读后写。该文件已存在则更新;不存在则创建。 ‘a’:在打开的文件末端添加数据。文件不存在则创建。 ‘a+’:打开文件后,先读入数据再添加数据。文件不存在则创建。 2)关闭文件 文件在进行完读、写等操作后,应及时关闭,以免数据丢失。关闭文件用fclose函数,调用格式为: sta=fclose(fid) 说明:该函数关闭fid所表示的文件。sta表示关闭文件操作的返回代码,若关闭成功,返回0,否则返回-1。如果要关闭所有已打开的文件用fclose(‘all’)。1)读文本文件 fscanf函数可以读取文本文件的内容,并按指定格式存入矩阵。其调用格式为: [A,COUNT]=fscanf(fid,format,size) 说明:其中A用来存放读取的数据,COUNT返回所读取的数据元素个数,fid为文件句柄,format用来控制读取的数据格式,size为可选项。 2)写文本文件 fprintf函数可以将数据按指定格式写入到文本文件中。其调用格式为: fprintf(fid,format,A) 说明:fid为文件句柄,指定要写入数据的文件,format是用来控制所写数据格式的格式符,与fscanf函数相同,A是用来存放数据的矩阵。

MATLAB读写Excel

MATLAB读写Excel (2012-08-27 15:07:00) 转载▼ 在一篇文章里看到了MATLAB对Excel文件的操作。当然,最简单的是选状态栏中的Import 了,在这里作者提供了两种读取Excel文件的方法。 1 利用matlab从excel中读取数据使用 1.1 uiimport可视化导入命令 只需要在command window中输入uiimport,出现这个窗口后你就懂了 1.2 用xlsread读Excel,不仅适合后缀为xls的文件,07版xlsx也适用 假设excel表的文件名为book1.xls,存放在E:\ 读取命令:data = xlsread('E:\book1'); 这样就将excel中的数据读入到data中了,但这个命令只能用来读数值,无法读取文字。如果读取数值的同时想读取excel中的文字可以使用下面的命令: [data,text] = xlsread('E:\book1'); 命令执行后数值在data数组中,文字在text中,text为cell类型 xlsread命令参数如下

data = xlsread(filename, sheet, range) sheet代表从哪个表中读入数据,range代表读入数据区间例如:'A2:D4' 2. 用matlab将数据写入excel中 xlswrite(filename, M, sheet, range) 例:xlswrite('E:\text.xls',M,sheet2,'A3:E5') M为要写入的数据,可以是矩阵也可以是cell类型 注:MATLAB中读写Excel的函数有 xlsfinfo检查文件是否包含excel表格;xlread读写excel文件;xlswrite写excel文件。xlsread的调用格式为: 1. num=xlsread('filename')从excel文件filename的第一个工作页中读取所有的数据到double 型数据num中。它忽略头行、头列、尾行、和尾列的所有单元为文本的行列,其他单元中的文本全部读取为NaN。 2. num=xlsread('filename',-1)手动框选要读取的数据块,返回到矩阵num中。 3. num=xlsread('filename',sheet)读filename中指定页的数据到矩阵中。 4. num=xlsread('filename','range')读filename中第一页的指定区域的数据到矩阵中。例如 num=xlsread('a1.xls','A2:G2') 5. num=xlsrad('filename',sheet,'range')读filename中指定页、指定区域的数据到矩阵中。 6. num=xlsread('filename',sheet,'range','basic')以基本输入模式,读filename中指定页的数据到矩阵中,参数range被忽略,sheet必须为带引号的字符串且区分字母大小写。这种模式限制了数据输入的能力,不将excel当作一个COM服务器。 7. [num,txt]=xlsread('filename',.......)读filename中的数据,返回数据double型数据到num中,文本数据到字符串单元数组txt中。txt中对应的数值数据的位置为空字符串。 8. [num,txt,raw]=xlsread('filename',.....)读filename中的数据,并返回数值数据到double型数组num中,非数值的文本到字符串单元数组txt中,未处理的单元数据到字符串单元数组raw 中。raw中包含数值数据和文本数据。 通过excel link实现excel和matlab数据共享,安装excel link的步骤如下(03版):

matlab基础xlsread

在一篇文章里看到了MATLAB对Excel文件的操作。当然,最简单的是选状态栏中的Import 了,在这里作者提供了两种读取Excel文件的方法。 1 利用matlab从excel中读取数据使用 1.1 uiimport可视化导入命令 只需要在command window中输入uiimport,出现这个窗口后你就懂了 1.2 用xlsread读Excel,不仅适合后缀为xls的文件,07版xlsx也适用 假设excel表的文件名为book1.xls,存放在E:\ 读取命令:data = xlsread('E:\book1'); 这样就将excel中的数据读入到data中了,但这个命令只能用来读数值,无法读取文字。如果读取数值的同时想读取excel中的文字可以使用下面的命令: [data,text] = xlsread('E:\book1'); 命令执行后数值在data数组中,文字在text中,text为cell类型 xlsread命令参数如下 data = xlsread(filename, sheet, range) sheet代表从哪个表中读入数据,range代表读入数据区间例如:'A2:D4' 2. 用matlab将数据写入excel中 xlswrite(filename, M, sheet, range) 例:xlswrite('E:\text.xls',M,sheet2,'A3:E5') M为要写入的数据,可以是矩阵也可以是cell 类型 注:MATLAB中读写Excel的函数有 xlsfinfo检查文件是否包含excel表格;xlread读写excel文件;xlswrite写excel文件。xlsread的调用格式为: 1. num=xlsread('filename')从excel文件filename的第一个工作页中读取所有的数据到double 型数据num中。它忽略头行、头列、尾行、和尾列的所有单元为文本的行列,其他单元中的文本全部读取为NaN。 2. num=xlsread('filename',-1)手动框选要读取的数据块,返回到矩阵num中。

matlab关于excel的相关操作

一、matlab读取excel数据 y=xlsread('0.3C-20to50dischargevoltage.xlsx','sheet1','c2:c20') 二、matlab 读入excel 小数位数丢失问题 一)如果要在matlab 命令提示符下显示更多有效位数,可以执行format long g 或 format long e 还有很多显示的格式,详情参见format 函数的帮助 (二)也可以用vpa(A,N),N 为显示的数字位数 第一种无法精确控制小数位数,只能是5,10,15 第二种可以精确控制小数位数,只是速度很慢,不适用大矩阵问题 三、matlab 将数据保存在excel 中的操作 %xlswrite('文件存盘位置\文件名字(自己想取的文件名).xls',在matlab 工作窗口中的数组)%例如:将数组A 存盘到d 盘的003文件夹xlswrite('d:\003.xls',A) 稍微复杂些:bb=[1,2,3,4,5,6];cc=[7,8,9,10,11,12];xlswrite('test.xlsx',bb','Sheet2','B1:B6')xlswrite('test.xlsx',cc','Sheet2','C1:C6') bb=[1,2,3,4,5,6];cc=[7,8,9,10,11,12];xlswrite('test.xlsx',bb','Sheet2','B')xlswrite('test.xlsx',cc','Sheet2','C')与上面程序的效果一样 PS :如果每次都要存入不同的文件,需要每次修改程序中要保存的文件名 Office2007必须用 xlsx,office2000或2003用xls,否则无法打开

关于matlab读取excel以及处理

在许多时候我们要借助于matlab读取excel的内容进行处理,一下是一种常用的处理方法 office的表格文件也就是xls文件本质上就是一个二维矩阵,二维矩阵是用来保存数据的最佳方式,所以在日常工作中,我们从其它地方获取的数据通常都被保存为xls格式,但处理数据时,我们却需要把xls文件的数据导入到matlab里进行处理。 如果你只处理一个文件并且只做一次的话,你可以手动来拷贝粘贴,这花费不了你太多时间。如果有很多xls文件,或者你的xls文件的内容可能随时被修改,那么下面的方法可以派上用场。 matlab自身提供了大量的函数,包括读取office文件。其中xlsread和xlswrite就是专门用来读取xls文件里的数据的。这两个函数的使用方法可以直接查看matlab自带的帮助。 xlsread对于纯数据的xls文件支持很完美,也就是说当xls文件里的每个格子都是“数”时,xlsread会直接返回一个实数矩阵。但是通常我们拿到xls文件并不是这样,它的表头多半是描述性文字,它的数据也有可能是文字,有些位置的数据还有可能是缺失的。xlsread对这样的文件读取无能为力,或者说需要大量的时间去协调数据的位置信息。要是有一个函数,能够按照原有的顺序直接读取所有的单位格数据就好了。当然,这时候返回的矩阵就不能是一个数值矩阵了,它将会是一个cell矩阵,里面的每个元素类型可能不一样。 matlab本身并不提供这个功能,但是另外有一个函数officedoc完美的实现这个功能。这个函数包可以去OfficeDoc官方网站上去下载,解压缩后放到工作路径上即可。使用方法可以查询help officedoc。officedoc是收费函数包,但有免费版本,而且其免费版本可以实现上面我们所说的效果(收费版本主要是可以用来修改office文件)。 例子: 在matlab中读取xls格式的文件内容如应用如下函数: 1.bb=xlsread('c:feature.xls','a0:an40'),其中:c:feature.xls为文件存放的地址,a0:a40为将要读取的单元格的范围.bb为读取的矩阵在MATLAB中的变量名. 2.使用m文件脚本如下: Excel = actxserver('Excel.Application'); set(Excel, 'Visible', 1); Workbooks = Excel.Workbooks; Workbook = invoke(Workbooks, 'Open', [cd,'\feature\ABC.xls']); %%读取 ABC.xls:sheet1 a1(即 R1C1)~an40(即 R240c40) 范围内的40by40矩阵 read_excel=ddeinit('excel','ABC.xls:sheet1'); feature1 = ddereq(read_excel, 'R1c1:R40c40'); feature1 %%关闭ABC.xls invoke(Excel, 'Quit'); delete(Excel); 注意:在使用时将m文件与xls文件存于同一个目录下.另外:sheet1:可以重命名,且读取sheet的名称要和实际存放的名称相同.

在Excel中应用MATLAB

收稿日期:2000205222  作者简介:李杰(1972-),男,硕士研究生,主要研究方向:遥控遥测、CDM A 扩频通信仿真、卫星通信. 文章编号:1001-9081(2000)11-0066-02 在Excel 中应用M AT LAB 李 杰 (北京航空航天大学电子工程系,北京100083) 摘 要:详细介绍了连接Excel 和M AT LAB 的步骤及在Excel 中应用M AT LAB 的方法,极大地增强了Excel 处理数据的能力和图形输出的能力。 关键词:Excel ;Matlab ;函数 中图分类号:TP311 文献标识码:A 1 MAT LAB 和Excel 简介 M AT LAB 是MathW orks 公司推出的面向工程和 计算的交互式计算软件,它已成为国际公认的最优秀的科技应用软件。自1980年以来,它已被广泛应用于控制系统、信号处理、数据分析、通信系统、金融系统、生物医学等领域。M AT LAB 拥有三大特点:一是强大的矩阵处理和数值运算能力;二是强大的符号运算能力;三是强大的图形输出能力。M AT LAB 的三大特点使它不仅能够进行复杂的数据计算、符号运算,而且能够将计算的结果以二维、三维、乃至四维的图形表现出来,并且可以通过对图形线性、立面、色彩、渲染、光线、视角等特性的处理,把计算数据的特征表现得淋漓尽致。 Excel 是一个非常出色的电子表格软件,它以 图、文、表三者完美结合的形式被广泛应用于财务、统计和分析等领域。Excel 内包含一个巨大的内置函数集,供数据处理使用,如能将M AT LAB 强大的数据计算和处理能力、灵活的可编程能力、完美的图形 输出能力赋予Excel ,那么Excel 的功能将会变得更加强大。本文就介绍如何将Excel 和M AT LAB 结合起来,使它们交互协同工作。 2 连接E xcel 和M A T LA B 的步骤与函数 1)运行Micros oft Excel ; 2)打开工具菜单(T ools ),选择加载宏(Add -Ins ),单击Browse 按钮; 3)在C :\M AT LAB \EX LI NK 下找到EXC LI NK.X LA ,单击OK 按钮; 4)返回到加载宏(Add -Ins )窗口,单击OK 按 钮,Excel Link 则被加载到Excel 中; 5)观察Excel 会发现M AT LAB 命令窗口(包括 putmatrix ,getmatrix ,evalstring 三个按钮)出现在Excel 的任务栏内(如图1)。 putmatrix ,getmatrix ,evalstring 三个按钮的作用分 别是:将电子表格内所选数据发送到M AT LAB ;从 M AT LAB 获取数据;执行M AT LAB 命令。 连接Excel 和M AT LAB 的数据管理函数共有七 表1 函数名 适用范围 宏 工作簿 作 用 M LPutVar < 将Excel 工作簿中的数据发送到M AT LAB M LG etVar < 将M AT LAB 中的数据发送到Excel M LPutM atrix << 将Excel 工作簿中的数据发送到M AT LAB M LG etM atrix << 将M AT LAB 中的数据发送到Excel M LAppendM atrix << 将Excel 工作簿中的数据发送到M AT LAB M LDeleteM atrix << 删除M AT LAB 中的变量M LEvalS tring < < 在Excel 中执行M AT LAB 命令 第20卷第11期2000年11月 计算机应用C om puter Applications Vol.20,No.11Nov.,2000

matlab程序转换和在excel VBA

matlab程序转换和在excel VBA中的调用。 金融行业中VBA有着几乎最广泛的运用,但是很多人苦于VBA很难找到如同matlab强大的数学运算工具库,而在某些问题的处理上会大费周章。 首先打开matlab(我的版本matlab 2006b, version7.3),在命令窗口输入指令: mbuild -setup 出现选择: Please choose your compiler for building standalone MATLAB applications: ?? Would you like mbuild to locate installed compilers [y]/n? 接着选择No 然后出现选择项: Select a compiler: [1] Borland C++Builder version 6.0 [2] Borland C++Builder version 5.0 [3] Borland C/C++ (free command line tools) version 5.5 [4] Lcc C version 2.4.1 [5] Microsoft Visual C/C++ version 8.0 [6] Microsoft Visual C/C++ version 7.1 [7] Microsoft Visual C/C++ version 6.0 ?? [0] None 我们是要转换为excel可以调用的compiler,所以5,6,7都可。我自己的电脑装有VC++6.0,所以我选择的7 接下来就是让你输入你安装的vc++6.0的路径并确认。 ?? 做好这一步之后,就可以在命令窗口输入指令:deploytool 然后matlab右边会弹出一个操作窗口,然后新建一个项目和路径,记得选择成builder for excel。 然后在项目里面添加你要转换的所有你自己编写的matlab函数。(必须是matlab的函数,所以必须以function开头) 然后点击"build the project"的小图标,等着转换完成。 这一步做完后,就可以关闭matlab了。把你之前设立新项目的文件夹下多出的“distrie”和“src"两个文件夹拷贝到你要使用这些自定义函数的excel文件所在地方。然后打开excel,再打开excel的vba编辑器(Alt+F11),在编辑器里面点”文件---导入文件“导入刚才拷贝过来的”src“文件夹下后缀名.bas的文件。现在,就可以在excel里面轻松使用你自定义的函数了。调用的函数名称和你写的matlab函数名一样,所以非常简便。 如果函数返回值是一个矩阵,比如A=Personal(),返回的A会是3*3矩阵,那么就拖蓝一片3*3区域,输入"=Personal()”,然后点击"ctrl+shift+Enter",这样出来的结果,就是你matlab自定义函数"Personal()"应该返回的矩阵了。

MATLAB访问excel

MATLAB作为自动化客户端调用Excel服务器编程项目中最后的功能——打印报告,最终确定使用ActiveX方式访问office,这个应该称之为OLE(对象链接与嵌入)方法。通过MATLAB 调用Excel服务器,可以完成一些非数据对象的交互,比如图片。 在这里演示一下MATLAB与Excel交互的整体过程,当然这里不是报告的内容,这个属于项目的资料了。这里通过简单的图片来表示,实际要做的时候,步骤和这个基本一致,只是过程麻烦些,每一个图片都要调整,然后数据内容调整,单元格格式等等:

先看一下示意的效果: 1.MATLAB打开自动化方法 使用actxserver函数。如下: he = actxserver('Excel.Application'); 上述语句创建excel服务器,句柄值为he,通过he可以访问excel服务器的属性和方法。

在使用中为了方便存储,可以设置默认路径,使用excel服务器的DefaultFilePath 属性: he.DefaultFilePath = 'E:\'; 调试中为了方便观看excel文件内容,可以设置excel服务器的Visible属性,实际调试时可以改为1,调试过后改为0即可: he.Visible = 1; 2.创建工作簿方法 通过excel服务器的属性Workbooks创建工作簿句柄,通过该句柄的方法Add创建工作簿: hw = he.Workbooks.Add; 然后,继续通过hw的Worksheets属性建立Sheets类句柄: hs = hw.Worksheets; 访问某一sheet的方法即用sheets的Item方法: sheetItem = hs.Item(1); 上面即建立的sheet类句柄,可以通过该句柄访问单一sheet。

如何将Excel中的数据导入MATLAB并在MATLAB中画出图像

1. 如何将Excel 中的数据在MATLAB 界面下显示出来: 首先Excel 必须是OffiCe 的(WPS 的不可以,MATLAB 不能识别), 在MATLAB 中使用命令XlSread 读取Excel 中的数据到MATLAB 里, 如下所 [nu mber,txt,raw]=xlsread(' noise.xlsx'),此时读取的文件须 在MATLAB 默认路径下,命令具体用法及参数含义可直接用 help 命 令在MATLAB 中查找。读取的数据界面如下: 2.如何将Excel 中的数据导入 MATLAB 并在MATLAB 中画出图像? 首先Excel 必须是OffiCe 的(WPS 的不可以,MATLAB 不能识别), file-import Data-在工作路径下找到需要导入的文件 (图3)-点击打 开 >> InILLInb?r j txt j raw]≡xlsread b Γnoise ) number = 0.24?fl 23. 6000 0.24S0 23- 0000 0.25GO 30. 4000 0* 2520 25.2000 0. 2E40 13. OOOO 0.2560 19. 2000 0.2580 21.2000 0.2600 17. 2000 0.2620 16.8000 0. 2640 17.6000 0. 2660 13. 6000 0. 2660 11.2000 0. 2700 13.6000 EaW [0.2460] [23,6000] [0.2480] 〔 28] [0.2500] 130.4000] [0.25ΞOI I25.ΞOOO] [0.Ξ540] [ IS] [0.Ξ560] [19.3000] [0.25SO] [2L 2000] [0.2600] [17.2000] [0. 2β20] [16.S000] [0. 2640] [17. 6000] [0. 2660] [13. 6000] [0.2680] [1L 2000] [0.2700] [13. 6000] [0.27ΞOI [13.Ξ000] [0.2740] [ 10] [0.Ξ760] [12.4000]

相关文档
最新文档