xueyi 发表于 2005-12-27 18:49

[转帖]MATLAB与word,excel,powerpoint联用

MATLAB与Microsoft Excel的连接

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

1. 读者准备知识

阅读本章内容,读者需要熟悉以下内容:

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

(2)Microsoft Excel;

(3)Visual Basic for Applications (VBA) 。

2. 编译器

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

(1)Borland C++ Builder 4;

(2)Borland C++ Builder 5;

(3)Borland C++ Builder 6;

(4)Microsoft Visual Studio 5.0;

(5)Microsoft Visual Studio 6.0;

(6)Microsoft Visual Studio .NET。

xueyi 发表于 2005-12-27 18:50

10.1 Excel中实现矩阵输出

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

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

(1)创立一个新项目;

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

(3)对项目进行编码;

(4)对模型进行测试;

(5)程序的调用;

(6)对程序进行打包。

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

【实例10-1】本节中可以看到如何将MATLAB中的魔方矩阵输入到Excel中,并显示出来。

1. 打开Excel Builder

在MATLAB命令窗口键入mxltool,或者选择【Start|MATLAB| MATLAB Excel Builder|MATLAB Excel Builder】来激活Excel Builder窗口,图10-1即为Excel Builder。

2. 建立项目

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

(1)Component name文本框中输入xlmagic;

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

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

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

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

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

3. 编写M文件

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

function y = mymagic(x)

y = magic(x)

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


此主题相关图片如下:

图10-1MATLAB Excel Builder图形交互窗口

此主题相关图片如下:

图10-2 新项目设置对话框

xueyi 发表于 2005-12-27 18:51

3. 构造项目:

(1)在MATLAB Excel Builder图形交互窗口中单击【Add File】按钮;

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

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

4. 将Excel Builder COM函数加到Excel中去

(1)打开Excel软件;

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

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

此主题相关图片如下:

图10-3 返回Excel表单的魔方矩阵

此主题相关图片如下:

图10-4 转置后的魔方矩阵


此主题相关图片如下:

图10-5 扩充后的魔方矩阵

注意:如果你要再次改变魔方矩阵的大小,一般只能增大矩阵的阶次,如现在已经是6阶了,你只能改为大于6阶,否则结果不准。

建议:你可以先将魔方矩阵的值全部删除,然后将A32单元中的6改为4看看结果。

xueyi 发表于 2005-12-27 19:26

2 使用MATLAB Notebook

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

1. 在Word中执行命令的基本过程

Notebook采用输入细胞(input cell)来定义MATLAB的输入命令。步骤如下:

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

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

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

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

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

m =

1 0 0

0 1 0

0 0 1

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

Warning: Divide by zero.

(Type "warning off MATLAB:divideByZero" to suppress this warning.)

ans =

Inf NaN NaN

NaN Inf NaN

NaN NaN Inf

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

??? format compact;m=eye(3) n=eye(4)

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

Error: Missing operator, comma, or semicolon. 绿色)


2. 实例讲解

【实例11-1】 在一段文本中间执行代码

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

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

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

你去过《振动》论坛吗?m=eye(3) 那里有很多好东西。

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

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

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

你去过《振动》论坛吗?m=eye(3) 那里有很多好东西。

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

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

(4)如果要将输出细胞转化为普通文本,选中要转换的细胞,然后从Notebook菜单中选中“Undefine Cells”选项或者Alt+U。执行结果见图12-3。

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

你去过《振动》论坛吗?m=eye(3) 那里有很多好东西。%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

m =

1 0 0
0 1 0
0 0 1

【实例11-2】绘制一幅图片

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

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

Time=;

Amplitude=;

fill(Time,Amplitude,'g'),axis();

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

hold on

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

hold off

ymax=min(y)

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

t=0:0.1:20;y=1-cos(t).*exp(-t/5);
Time=;
Amplitude=;
fill(Time,Amplitude,'g'),axis(),xlabel('Time'),ylabel('Amplitude');
hold on
plot(t,y,'r','LineWidth',2)
hold off
ymax=min(y)
ymax =

0

xueyi 发表于 2005-12-27 19:28

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

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

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

本例制作如图12-3所示Powerpoint。

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

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

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

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

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

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

说明:超级链接所指向的M-book文件必须事先准备好。有关M-book的制作见上一节。


此主题相关图片如下:

图11-3 Powerpoint运行界面

cwj0396 发表于 2006-4-16 09:55

谢谢老大了,正要用到!!

ericlin 发表于 2006-5-18 16:39

是不是太难了?

enqi01 发表于 2006-5-19 10:19

好东东

sys1983 发表于 2006-5-19 16:02

顶下 不过 M-book文件的制作还是弄不大清楚

sys1983 发表于 2006-5-19 16:16

中间的过程是不是被屏蔽了 我怎么看不见

happy 发表于 2006-5-19 18:20

应该是转贴有问题

lxq 发表于 2006-5-26 18:00

的确很难啊~~

ericlin 发表于 2006-5-29 10:28

又来看了一遍,又晕了一遍。

tony1979 发表于 2006-7-20 17:02

的确是个好东东,谢谢LZ

realyyy 发表于 2006-7-21 10:32

我也是“看一遍,晕一遍”......
页: [1] 2
查看完整版本: [转帖]MATLAB与word,excel,powerpoint联用