响应版主liguowen的号召,为了获取五一劳动奖状,我就不放假了,希望在来年拿到这个奖。在这个五一的晚上,我把我以前学习时的总结写给大家,也希望大家都来争取这个奖状。
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。
----------------------------------------------
公、诚、勇、毅
西岳轩昂,北极辉煌;泽被万方,化育先翔;
巍哉学府,焕乎文章;厚生教养,国乃盛强;
千仞之墙,百炼之钢;镂木铄金,为工所长;
公诚勇毅,永矢毋忘;光华灿烂,西工无疆!
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 新项目设置对话框
----------------------------------------------
公、诚、勇、毅
西岳轩昂,北极辉煌;泽被万方,化育先翔;
巍哉学府,焕乎文章;厚生教养,国乃盛强;
千仞之墙,百炼之钢;镂木铄金,为工所长;
公诚勇毅,永矢毋忘;光华灿烂,西工无疆!
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表单的魔方矩阵
注意:如果你要再次改变魔方矩阵的大小,一般只能增大矩阵的阶次,如现在已经是6阶了,你只能改为大于6阶,否则结果不准。
建议:你可以先将魔方矩阵的值全部删除,然后将A32单元中的6改为4看看结果。
----------------------------------------------
公、诚、勇、毅
西岳轩昂,北极辉煌;泽被万方,化育先翔;
巍哉学府,焕乎文章;厚生教养,国乃盛强;
千仞之墙,百炼之钢;镂木铄金,为工所长;
公诚勇毅,永矢毋忘;光华灿烂,西工无疆!
MATLAB与Microsoft Word的连接
前面提到MathCAD文字处理是非常强的,那么MATLAB的文字处理又将如何呢?MathWorks公司开发的MATLAB Notebook成功地将Microsoft Word和MATLAB结合在一起,为文字处理、科学计算和工程设计营造了一个完美的工作环境。这样MATLAB不仅兼具原有的计算能力,而且又增加了Word软件的编辑能力,已经远远的把MathCAD抛在后面。MATLAB Notebook可以在word中随时修改计算命令,随时计算并生成图像返回,使用户能在Word环境中“随心所欲地享用”MATLAB的浩瀚科技资源。MATLAB Notebook的工作方式是:用户在word文档中创建命令,然后送到MATLAB的后台中执行,最后将结果返回到word中。
建议撰写科技报告、论文、专著的科学工作者使用MATLAB Notebook,建议讲授、编写理工科教材的教师使用MATLAB Notebook,建议对于演算理工科习题的广大学生使用MATLAB Notebook。MATLAB Notebook的强大功能将会使你事半功倍。
1 安装MATLAB Notebook
从上面的介绍中可以看出,使用MATLAB Notebook时,你的计算机中必须有Word和MATLAB。本书以MATLAB6.5和word2000为例。MATLAB Notebook文件又称为M-book文件。MATLAB6.5的Notebook是在MATLAB环境下安装的。具体步骤如下:
(1)在系统中分别安装MATLAB6.5和word2000,并启动MATLAB6.5命令窗口;
(2)在命令窗口中输入:
>> notebook -setup
就会得到如下提示:
Welcome to the utility for setting up the MATLAB Notebook
for interfacing MATLAB to Microsoft Word
Choose your version of Microsoft Word:
[1] Microsoft Word 97
[2] Microsoft Word 2000
[3] Microsoft Word 2002 (XP)
[4] Exit, making no changes
(3)根据安装的Word的版本选择相应的代号,本文选择如下:
Microsoft Word Version: 2
Notebook setup is complete.
这样你就可以使用MATLAB Notebook了。有两种方法可以打开一个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 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=[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 Input Cell】,最后从Notebook菜单中选中【Evaluate Cell】选项,或者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与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的制作见上一节。