星云外

MATLAB与word,excel,powerpoint联用(2009-02-24 16:40:39)转载
http://blog.sina.com.cn/s/blog_5ecfd9d90100ciwr.html

MATLAB与Microsoft Excel的连接
本章需要读者对MATLAB与Microsoft Excel有一定的使用经验。介绍使用MATLAB ExcelBuilder实现MATLAB和MicrosoftExcel连接的方法和技巧,从而实现两者的无缝接口。希望通过本章的学习,能够让读者对Excel连接的思路及实际应用有比较深入的了解。通过两者的连接,可以使读者更加容易直观的处理数据。在MATLAB6.5以前的版本中,两者的连接是通过Excellink来实现的,其相关的使用方法本章不涉及。

1. 读者准备知识
阅读本章内容,读者需要熟悉以下内容:

(1)熟悉MATLAB及MATLAB编译器;

(2)Microsoft Excel;

(3)Visual Basic for Applications(VBA) 。

2. 编译器
并不是所有的编译器都支持COM组件,Excel Builder可以选用以下编译器:

(1)Borland C++ Builder4;

(2)Borland C++ Builder5;

(3)Borland C++ Builder6;

(4)Microsoft Visual Studio5.0;

(5)Microsoft Visual Studio6.0;
(6)Microsoft Visual Studio .NET。

 Excel中实现矩阵输出
MATLAB ExcelBuilder的约束和限制类同于MATLAB编译器,但是有一点必须注意,一个版本下进行编码的ExcelAdd-in文件,只能在同版本下执行任务,例如,在Excel 97中进行编码的文件,不能在Excel2000种进行工作。

用MATLAB ExcelBuilder建立一个可调用的程序主要遵循以下几步:

(1)创立一个新项目;

(2)添加M文件或MEX文件;

(3)对项目进行编码;

(4)对模型进行测试;

(5)程序的调用;

(6)对程序进行打包。

在此采用配合实例的方法,对以上过程进行讲解。

1. 打开Excel Builder
在MATLAB命令窗口键入mxltool,或者选择【Start|MATLAB| MATLAB Excel Builder|MATLABExcel Builder】来激活Excel Builder窗口

2. 建立项目
在Excel Builder选择【File|New Project】菜单,在新项目设置对话框中进行如下设置:

(1)Componentname文本框中输入xlmagic;

(2)按下Tab键或者用鼠标点击其它文本框,系统会进行默认设置。保持Classname文本框中的xlmagic不变;

(3)在Projectversion文本框中默认1.0不变;

(4)在Projectdirectory文本框中默认的工作目录是MATLAB的工作目录,保持不变,如果此目录不存在,OK后,系统提示是否新建,选yes;

(5)在Compile codein单选栏中选择C;

(6)Compileoptions多选栏中的项目全部空缺不选。

3. 编写M文件

其实mymagic.m文件非常简单,其内容如下:

function y = mymagic(x)

y = magic(x)

将文件保存到\work\xlmagic文件夹中。

3. 构造项目:
(1)在MATLAB Excel Builder图形交互窗口中单击【Add File】按钮;

(2)从\work\xlmagic文件夹中选择mymagic.m文件。

(3)单击【Build】按钮或从Build菜单中选择【Excel|COMFiles】菜单,对文件进行编码。

4. 将Excel BuilderCOM函数加到Excel中去
(1)打开Excel软件;

(2)开文件\work\xlmagic\mymagic.xls。注意:Excel会提示文件中包含宏信息,选择启用宏来运行这个例子;

(3)Excel主窗口(不是VisualBasic编辑窗口)按下Alt+F8,或者选择【工具|宏|宏】菜单。从对话框中选择mymagic运行,结果如图10-3:
(4)重新打开宏对话框,从中选择mymagic_transpose,然后运行就可以得到转置的魔方矩阵,如图10-4:
(5)再次打开宏对话框,从中选择mymagic_resize,然后运行,但是返回的仍然是一个四阶魔方矩阵。将A32单元中的数字改为6,就可以得到如图10-5结果:

MATLAB与MicrosoftWord的连接

前面提到MathCAD文字处理是非常强的,那么MATLAB的文字处理又将如何呢?MathWorks公司开发的MATLABNotebook成功地将MicrosoftWord和MATLAB结合在一起,为文字处理、科学计算和工程设计营造了一个完美的工作环境。这样MATLAB不仅兼具原有的计算能力,而且又增加了Word软件的编辑能力,已经远远的把MathCAD抛在后面。MATLABNotebook可以在word中随时修改计算命令,随时计算并生成图像返回,使用户能在Word环境中“随心所欲地享用”MATLAB的浩瀚科技资源。MATLABNotebook的工作方式是:用户在word文档中创建命令,然后送到MATLAB的后台中执行,最后将结果返回到word中。

建议撰写科技报告、论文、专著的科学工作者使用MATLABNotebook,建议讲授、编写理工科教材的教师使用MATLAB Notebook,建议对于演算理工科习题的广大学生使用MATLABNotebook。MATLAB Notebook的强大功能将会使你事半功倍。

1 安装MATLAB Notebook
从上面的介绍中可以看出,使用MATLABNotebook时,你的计算机中必须有Word和MATLAB。本书以MATLAB6.5和word2000为例。MATLABNotebook文件又称为M-book文件。MATLAB6.5的Notebook是在MATLAB环境下安装的。具体步骤如下:

(1)在系统中分别安装MATLAB6.5和word2000,并启动MATLAB6.5命令窗口;

(2)在命令窗口中输入:

>>notebook -setup

就会得到如下提示:

Welcome to the utility for settingup the MATLAB Notebook

for interfacing MATLAB toMicrosoft Word

 


Choose your version of MicrosoftWord:

[1] Microsoft Word 97

[2] Microsoft Word 2000

[3] Microsoft Word 2002(XP)

[4] Exit, making nochanges

(3)根据安装的Word的版本选择相应的代号,本文选择如下:

Microsoft Word Version:2

Notebook setup iscomplete.

这样你就可以使用MATLABNotebook了。有两种方法可以打开一个M-book文件。

 

(1)直接在MATLAB命令窗口键入命令来新建或打开一个M-book文件:

>>notebook %新建一个M-book(不建议使用,在我的计算机里经常出错)

>>notebook c:\documents\mymbook.doc %打开一个已经存在的M-book

(2)先打开word2000,然后打开文件(F)/新建(不要直接点击新建按钮),弹出图11-1对话框。选中其中的m-book模板。在新建的word文档中就会出现图11-2中黑圈所在的菜单栏。

2 使用MATLAB Notebook
Notebook是通过动态链接来和MATLAB交互的。Notebook和MATLAB交互的基本单位为细胞。Notebook需要输入MATLAB中的命令组成细胞,再传到MATLAB中运行,运行输出的结果再以细胞的方式传回Notebook。

1. 在Word中执行命令的基本过程
Notebook采用输入细胞(input cell)来定义MATLAB的输入命令。步骤如下:

(1)采用文本格式输入命令,在命令结束时不要按回车和空格键;

(2)从Notebook菜单中选中“Define InputCell”选项,用来定义输入细胞;

(3)从Notebook菜单中选中“EvaluateCell”选项或者Ctrl+Enter。

其中输入细胞都显示为黑方括号包括的绿色字符,输出细胞都是黑方括号包括的蓝色字符,如果出现错误黑方括号包括的红色字符,其它文本都默认为黑色字符。如下:(作者注释:无专门标示的行为蓝色)

m=eye(3) (作者注释:此行为绿色)

m =

 

1 0 0

 

0 1 0

 

0 0 1

m/0 (作者注释:此行为绿色)

Warning: Divide byzero.

 

(Type "warning offMATLAB:divideByZero" to suppress this warning.)

 

ans =

 

Inf NaN NaN

 

NaN Inf NaN

 

NaN NaN Inf

m=eye(3)n=eye(4) (作者注释:此行为绿色)

??? formatcompact;m=eye(3) n=eye(4)

 

| (作者注释:此行以及上下两行为红色)

 

Error: Missingoperator, comma, or semicolon. 绿色)

 

2. 实例讲解
 在一段文本中间执行代码

在MATLAB中,可以把输入细胞放在文本中间运行,而不影响其它文本。步骤如下:

(1)输入样本如下,将m=eye(3)放到文本中间。

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

你去过《动力学与控制技术》论坛吗?m=eye(3)那里有很多好东西。

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

(2)选中命令,如下所示:

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

你去过《动力学与控制技术》论坛吗?m=eye(3) 那里有很多好东西。

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

(3)从Notebook菜单中选中“EvaluateCell”选项或者Ctrl+Enter。将会出现上面例子中类似的结果。

(4)如果要将输出细胞转化为普通文本,选中要转换的细胞,然后从Notebook菜单中选中“UndefineCells”选项或者Alt+U。%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

你去过《动力学与控制技术》论坛吗?m=eye(3)那里有很多好东西。%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

m =

 

1 0 0

 

0 1 0

 

0 0 1

【实例】绘制一幅图片

生成完整图形的多条图形指令必须定义在同一细胞群中

t=0:0.1:20;y=1-cos(t).*exp(-t/5);

Time=[0,20,20,0];

Amplitude=[0.95,0.95,1.05,1.05];

fill(Time,Amplitude,'g'),axis([0,20,0,2]);

xlabel('Time'),ylabel('Amplitude');

hold on

plot(t,y,'r','LineWidth',2)

hold off

ymax=min(y)

将以上程序写到Word当中,然后全部选上,然后选择【Notebook|Define InputCell】,最后从Notebook菜单中选中【EvaluateCell】选项,或者Ctrl+Enter。得到如下结果

t=0:0.1:20;y=1-cos(t).*exp(-t/5);

 

Time=[0,20,20,0];

 

Amplitude=[0.95,0.95,1.05,1.05];

 

fill(Time,Amplitude,'g'),axis([0,20,0,2]),xlabel('Time'),ylabel('Amplitude');

 

hold on

 

plot(t,y,'r','LineWidth',2)

 

hold off

 

ymax=min(y)

 


ymax =

 

0


MATLAB与MicrosoftPowerPoint的连接


MATLAB与MicrosoftPowerPoint的连接使用的仍然是MATLABNotebook。本节就简单的谈谈如何使我们演讲稿更加具有交互性,使我们的演讲稿能够现场进行复杂的科学计算或改变参数后进行实时计算,并给出数值和图形结果。利用这种演讲稿,相信更能够吸引人,拉近与听众间的距离。

 


下面我们通过三个实例来介绍到底我们能做些什么。

1. 在M-book中实现计算和可视化的演讲稿
Powerpoint。

幻灯片采用顺序播放,但每张幻灯片上带下划线的文字都设置有超级连接。点击超级链接之后,将会转到相应连接好的Word文件。

下面简单介绍一下Powerpoint文档的制作步骤,保存为dytrol.ppt:

(1)启动Powerpoint,在对话框中选择空白文档,单击【确定】按钮;

(2)在新建幻灯片的自动模板中任选一个,本例选择第一个;

(3)在新建的模板中按照图12-3样式输入内容;

(4)选中“MATLAB扩展编程”文本,选择主菜单【插入|超级链接】,在链接文件框中选择事先准备好的M-book文件。这样就进入了Notebook环境。一旦进入这种环境之后,就可以实现MATLAB的绝大部分计算功能。

+++++++本文转载于 Dinga'sBlog http://www.dinga.cn +++++++

posted on 2010-04-16 12:51  星云外  阅读(634)  评论(0)    收藏  举报