matlab连续梁程序的编制与使用Word文档
- 格式:doc
- 大小:185.50 KB
- 文档页数:25
11.1MATLAB与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的强大功能将会使你事半功倍。
11.1.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 Notebookfor interfacing MATLAB to Microsoft WordChoose your version of Microsoft Word:[1]Microsoft Word97[2]Microsoft Word2000[3]Microsoft Word2002(XP)[4]Exit,making no changes(3)根据安装的Word的版本选择相应的代号,本文选择如下:Microsoft Word Version:2Notebook setup is complete.这样你就可以使用MATLAB Notebook了。
fun ctio n ceshi_Word%利用MATLAB生成Word文档% ceshi_Word%% Copyright 2009 - 2010 xiezhh.% $Revisio n: 1.0.0.0 $ $Date: 2009/12/14 12:37:00 $%设定测试Word文件名和路径测试.doc'];%判断Word是否已经打开,若已打开,就在打开的Word中进行操作,否则就打开try%若Word服务器已经打开,返回其句柄WordWord = actxGetR unnin gServer('Word.Applicati on');catch%创建一个Microsoft Word服务器,返回句柄WordWord = actxserver('Word.Applicatio n');en d;%设置Word属性为可见Word.Visible = 1; % 或set(Word, 'Visible', 1);%若测试文件存在,打开该测试文件,否则,新建一个文件,并保存,文件名为测试if exist(filespec_user,'file');Docume nt = Word.Docume nts.Ope n(filespec_user);% Docume nt = in voke(Word.Docume nts,'Ope n',filespec_user);elseDocume nt = Word.Docume nts.Add;% Docume nt = in voke(Word.Docume nts, 'Add');Docume nt.SaveAs(filespec_user);endContent = Document.Content; % 返回Content 接口句柄Selection = Word.Selection; % 返回Selection 接口句柄Paragraphformat = Selection.ParagraphFormat; % 返回ParagraphFormat 接口句柄%页面设置Docume nt.PageSetup.TopMarg in = 60;Docume nt.PageSetup.BottomMarg in = 45;Docume nt.PageSetup.LeftMarg in = 45;Docume nt.PageSetup.RightMarg in = 45;%设定文档内容的起始位置和标题Con te nt.Start = 0; %设置文档内容的起始位置Word .doc%上边距60磅%下边距45磅%左边距45磅%右边距45磅title ='试卷分析';Conten t.Text = title;%输入文字内容 Conten t.F on t.Size =16 ; %设置字号为16 Co nten t.Fo nt.Bold =4 ; %字体加粗 Con te nt.P aragraphs.Alig nment = 'wdAlig nParagraphCe nter :Select ion. TypeParagraph; xueqi = ' ( 2009— 2010 学年第一学期)’;Selection.Text = xueqi; % 在当前位置输入文字内容 Selectio n.Fo nt.Size = 12; % 设置字号为 12 Selectio n.Fo nt.Bold = 0; % 字体不加粗Tables = Docume nt.Tables.Add(Selectio n.Ra nge,12,9); %返回第1个表格的句柄DTI = Document.Tables.ltem(1); % 或 DTI = Tables; %设置表格边框DTI.Borders.OutsideLi neStyle = 'wdLi neStyleSi ngle'; DTI.Borders.OutsideLi neWidth = 'wdL in eWidth150pt'; DTI.Borders.I nsideLi neStyle = 'wdLi neStyleSi ngle'; DTI.Borders.I nsideLi neWidth = 'wdL in eWidth150pt'; DTI.Rows.Alig nment = 'wdAlig nRowCe nter';DTI.Rows.ltem(8).Borders.ltem(1).Li neStyle = 'wdL in eStyleNo ne'; DTI.Rows.ltem(8).Borders.lte m( 3).Li neStyle = 'wdL in eStyleNo ne';DTI.Rows.Item(11).Borders.Item(1).Li neStyle = 'wdLi neStyleNo ne'; DTI.Rows.ltem(11).Borders.ltem(3).Li neStyle = 'wdLi neStyleNo ne'; %设置表格列宽和行高column_width = [53.7736,85.1434,53.7736,35.0094,...35.0094,76.6981,55.1887,52.9245,54.9057];% 定义列宽向量row_height = [28.5849,28.5849,28.5849,28.5849,25.4717,25.4717,...32.8302,312.1698,17.8302,49.2453,14.1509,18.6792]; % 定义行高向量%通过循环设置表格每列的列宽 for i = 1:9DTI.Colu mn s.Item(i).Width = colu mn _width(i);%居中对齐Selectio n.Start = Conten t.e nd; %设定下面内容的起始位置%回车,另起一段 Selectio n.MoveDow n;%光标下移(取消选中)paragraphformat.Alig nment = 'wdAlig nParagraphCe nter : Select ion. TypeParagraph; %回车,另起一段 Select ion. TypeParagraph;%回车,另起一段Selection.Font.Size = 10.5; % 设置字号为 10.5%居中对齐%在光标所在位置插入一个12行9列的表格end%通过循环设置表格每行的行高for i = 1:12DTI.Rows.ltem(i).Height = row_height(i);end%通过循环设置每个单元格的垂直对齐方式for i = 1:12for j = 1:9DTI.Cell(i,j).VerticalAlig nment = 'wdCellAlig nV erticalCe nter'; endend%合并单元格DTI.Cell(1,4).Merge(DTI.Cell(1,5));DTI.Cell(2, 4).Merge(DTI.Cell(2, 5));DTI.Cell(3, 4).Merge(DTI.Cell(3, 5));DTI.Cell(4, 4).Merge(DTI.Cell(4, 5));DTI.Cell(5, 2).Merge(DTI.Cell(5, 5));DTI.Cell(5, 3).Merge(DTI.Cell(5, 6));DTI.Cell(6, 2).Merge(DTI.Cell(6, 5));DTI.Cell(6, 3).Merge(DTI.Cell(6, 6));DTI.Cell(5, 1).Merge(DTI.Cell(6, 1));DTI.Cell(7, 1).Merge(DTI.Cell(7, 9));DTI.Cell(8, 1).Merge(DTI.Cell(8, 9));DTI.Cell(9, 1).Merge(DTI.Cell(9, 3));DTI.Cell(9, 2).Merge(DTI.Cell(9, 3));DTI.Cell(9, 3).Merge(DTI.Cell(9, 4));DTI.Cell(9, 4).Merge(DTI.Cell(9, 5));DTI.Cell(10, 1).Merge(DTI.Cell(10, 9));DTI.Cell(11,5).Merge(DTI.Cell(11,9));DTI.Cell(12, 5).Merge(DTI.Cell(12, 9));DTI.Cell(11, 1).Merge(DTI.Cell(12, 4));Selection.Start = Content.end; % 设置光标位置在文档内容的结尾Select ion. TypeParagraph; %回车,另起一段Selection.Text ='主管院长签字:年月日';%输入文字内容Paragraphformat.Alig nment = 'wdAlig nParagraphRight'; % 右对齐Selection.MoveDown; % 光标下移%写入表格内容DTI.Cell(1,1).Range.Text ='课程名称';DTI.Cell(1,3).Range.Text ='课程号';DTI.Cell(1,5).Range.Text ='任课教师学院’;DTI.Cell(1,7).Range.Text ='任课教师 DTI.Cell(2,1).Range.Text ='授课班级 DTI.Cell(2,3).Range.Text ='考试日期 DTI.Cell(2,5).Range.Text ='应考人数 DTI.Cell(2,7).Range.Text ='实考人数 DTI.Cell(3,1).Range.Text ='出卷方式 DTI.Cell(3,3).Range.Text ='阅卷方式'; DTI.Cell(3,5).Range.Text ='选用试卷 A/B : DTI.Cell(3,7).Range.Text ='考试时间'; DTI.Cell(4,1).Range.Text ='考试方式'; DTI.Cell(4,3).Range.Text ='平均分'; DTI.Cell(4,5).Range.Text ='不及格人数 DTI.Cell(4,7).Range.Text ='及格率'; DTI.Cell(5,1).Range.Text ='成绩分布'; DTI.Cell(5,2).Range.Text = '90 分以上 DTI.Cell(5,3).Ra nge.Text = '80---89 分 DTI.Cell(6,2).Ra nge.Text = '70--79 分 DTI.Cell(6,3).Ra nge.Text = '60---69 分DTI.Cell(7,1).Ra nge.Text =['试卷分析(含是否符合教学大纲、难度、知识覆'盖面、班级分数分布分析、学生答题存在的共性问题与知识掌握情况、教学中 '存在的问题及改进措施等内容) '];DTI.Cell(7,1).Ra nge.ParagraphFormat.Alig nment = 'wdAlig nParagraphLeft :DTI.Cell(9,2).Range.Text ='签字:: DTI.Cell(9,4).Range.Text ='年 月 日'; DTI.Cell(10,1).Range.Text ='教研室审阅意见:’;DTI.Cell(10,1).Ra nge.ParagraphFormat.Alig nment = 'wdAlig nParagraphLeft'; DTI.Cell(10,1).VerticalAlig nment = 'wdCellAlig nVerticalTop'; DTI.Cell(11,2).Range.Text ='教研室主任(签字):年 月 日';DTI.Cell(11,2).Ra nge.ParagraphFormat.Alig nment = 'wdAlig nParagraphLeft'; DTI.Cell(8,1).Ra nge.P aragraphFormat.Alig nment = 'wdAlig nParagraphLeft'; DTI.Cell(8,1).VerticalAlig nment = 'wdCellAlig nV erticalTop'; DTI.Cell(9,2).Borders.ltem(2).L in eStyle = 'wdLi neStyleN on e'; DTI.Cell(9,2).Borders.ltem(4).L in eStyle = 'wdLi neStyleN on e'; DTI.Cell(9,3).Borders.Item(4).L in eStyle = 'wdLi neStyleN on e'; DTI.Cell(11,1).Borders.Item(4).Li neStyle = 'wdL in eStyleNo ne'; %如果当前工作文档中有图形存在,通过循环将图形全部删除Shape = Document.Shapes; % 返回 Shapes 接口的句柄 ShapeCount = Shape.Count; % 返回文档中 Shape 对象的个数 if ShapeCou nt ~= 0;for i = 1:ShapeCo unt;Shape.Item(1).Delete; % 删除第 1 个 Shape 对象 en d;en d;%产生标准正态分布随机数,画直方图,并设置图形属性人占%'; 人占 %'; 人占%'; 人占%';zft = figure(' un its',' no rmalized','positi on',...[0.280469 0.553385 0.428906 0.251302],'visible','off); % 新建图形窗口,设为不可见set(gca,'position',[0.1 0.2 0.85 0.75]); % 设置坐标系的位置和大小data = normrnd(0,1,1000,1); % 产生标准正态分布随机数hist(data); %绘制标准正态分布随机数的频数直方图grid on; % 添加参考网格xlabel('考试成绩'); %为X轴加标签ylabel('人数'); %为Y轴加标签%将图形复制到粘贴板hgexport(zft, '-clipboard');%将图形粘贴到当前文档里(表格的第8行第1列的单元格里),并设置图形版式为浮于文字上方% Select ion .Ra nge.PasteSpecial;DTI.Cell(8,1).Ra nge. Paragraphs.ltem(1).Ra nge. PasteSpecial;Shape.ltem(1).WrapFormat.Type = 3;Shape.ltem(1).ZOrder('msoBringlnFrontOfText'); % 设置图片叠放次序为浮于文字上方delete(zft); %删除图形句柄Document.ActiveWindow.ActivePane.View.Type = 'wdPrintView'; % 设置视图方式为页面Document.Save; % 保存文档口Love is n ot a maybe thing. You know whe n you love some one.。
连续梁程序说明文档——结12 张佳佳2011010128一、程序思路二、流程说明1、运行matlab,在命令窗口输入“LXL”,或直接通过File-Open打开“LXL.m”运行该m文件;2、根据提示输入结构的几何特性和荷载工况;在输入时需要注意以下几点:1)所有的向量以matlab可识别的数组形式输入;2)单元抗弯刚度仅支持数值输入,需要提出EI后输入剩余系数;3)输入的直接结点力矩数组元素个数应等于最大位移编码数。
3、当所有数据输入完毕之后,程序自动输出如下量:1)整体刚度矩阵KE;2)各节点转角ZJ;3)各杆端弯矩FJ。
三、计算算例算例选取题4,荷载工况2:程序运行过程:请输入单元总数:NE=6请输入单元杆长数组:BL=[4 6 6 8 4 6]请输入去掉EI后的抗弯刚度数组:EI=[1 1.5 1 2 1 1.5]请输入单元定位向量数组:JD=[1,2;2,3;3,4;4,5;5,6;6,7]请输入杆端弯矩数组注意数组维数与最大位移编码相同:P =[0 0 -8 0 10 0 0]请输入跨中集中荷载数组:FL =[0 12 8 0 6 0]请输入均布荷载数组:q =[0 0 0 0 0 0]各节点转角整体刚度矩阵各单元杆端弯矩弯矩图四、编程总结此次编程时是首次接触matlalb这个软件,深感这个软件的强大和各种函数给编程已经矩阵运算带来的方便。
可能自己的算法比较繁琐,但是满足了各种荷载工况以及输出弯矩图的基本要求。
程序不知道带符号的运算,所有输入都必须以纯数字组成的数组进行输入,相信在这方面还会有很大的改进空间。
MATLAB语言在开发连续梁桥顶推施工作者:梁爱斌王…文章来源:西安公路研究所点击数:530 更新时间:2019-1-7 [摘要]通过介绍MATLAB语言在顶推施工预应力混凝土连续桥施工过程内力动态分析程序设计中的应用,说明基于MATLAB语言开发结构分析软件的可行性和优越性。
关键词MATLAB语言顶推施工连续梁桥结构分析程序设计一、引言目前,常见的结构分析软件(程序)一般采用FORTRAN、C及可视化类语言中的一种或多种进行开发。
其开发周期一般较长、程序编制量大、程序的调试和测试较难实现,从而开发费用较高,而且在针对大型的数据处理和动态图形处理方面编程较复杂,尤其是采用多种语言进行混合或复合编程时,程序本身的调试和接口问题较为突出。
当然,这些语言有它们各自的优点,尤其表现在多语言的复合编程上,可将各语言的长处集于一身,并在一定程度上避免了使用它们有局限的方面。
在开发一个能对顶推法施工的连续梁桥进行施工全过程内力动态分析的软件时,尽管可采用FDRTRAN语言设计结构分析计算的基本模块,同时采用可视化类语言设计整个系统的基本控制模块这种优化方案,但它在结构的动态分析程序设计方面仍有两个大的难题:(1)大批量数据进行复杂的数值运算时程序较难设计和测试;(2)最终的计算结果进行可视化处理后形成实时动画较困难。
但用MATLAB进行整个程序的设计,上述两个问题即可迎刃而解。
二、MATLAB简介MATLAB是MathWorks公司于1982年推出的一套高性能的数值计算和可视化软件,它集数值分析、矩阵运算、信号处理和图形显示于一体,构成了一个方便且界面友好的用户环境。
在此环境下,对所要解决的许多问题,用户只需简单地列出数学表达式,其结果便会以数值和图形方式显示出来;对于大型问题,只需建立相应的数学模型,同样可以得到快速准确的解答。
其主要特点概括起来有以下几点:(l)MATLAB语言自带数值运算、矩阵运算方面的常规算法函数6000余条,并且具有自身的矩阵运算语法,使得一般的小型数据处理显得极为简单。
function ceshi_Word%利用MATLAB生成Word文档% ceshi_Word%% Copyright 2009 — 2010 xiezhh。
%$Revision:1。
0。
0。
0 $$Date: 2009/12/14 12:37:00 $% 设定测试Word文件名和路径filespec_user = [pwd '\测试。
doc’];% 判断Word是否已经打开,若已打开,就在打开的Word中进行操作,否则就打开Wordtry% 若Word服务器已经打开,返回其句柄WordWord = actxGetRunningServer(’Word。
Application’);catch% 创建一个Microsoft Word服务器,返回句柄WordWord = actxserver(’Word.Application’);end;%设置Word属性为可见Word.Visible = 1; % 或set(Word,'Visible',1);%若测试文件存在,打开该测试文件,否则,新建一个文件,并保存,文件名为测试。
doc if exist(filespec_user,'file’);Document = Word.Documents.Open(filespec_user);% Document = invoke(Word。
Documents,’Open’,filespec_user);elseDocument = Word。
Documents。
Add;%Document = invoke(Word.Documents, 'Add’);Document。
SaveAs(filespec_user);endContent = Document.Content; %返回Content接口句柄Selection = Word。
Selection; %返回Selection接口句柄Paragraphformat = Selection.ParagraphFormat;%返回ParagraphFormat接口句柄% 页面设置Document.PageSetup。
NotebookNotebook 的功能在于:使用户能在Word环境中“随心所欲地享用”MATLAB的浩瀚科技资源,为用户营造融文字处理、科学计算、工程设计于一体的完美工作环境。
MATLAB Notebook 制作的M-book文档不仅拥有MS-Word 的全部文字处理功能,而且具备MATLAB无与伦比的数学解算能力和灵活自如的计算结果可视化能力。
它既可以看作解决各种计算问题的字处理软件,也可以看作具备完善文字编辑功能的科技应用软件。
M-book文档最显著的特点是它的“活”性:●它为论文、科技报告、讲义教材、学生作业的撰写营造了文字语言思维和科学计算思维的和谐环境。
●用M-book写成的电子著作、电子文稿、讲义教材不仅图文并茂,而且动静结合。
那些由MATLAB指令构成的例题、演示,都可供读者亲自操作,举一反三,从而在“手脑并用”的环境中由此及彼、由浅入深。
8.1Notebook的配置和启动8.1.1Notebook的配置(1)与MATLAB适配的Word随MATLAB版本的升级,与其适配的版本也会发生变化。
以MATLAB R2007a为例,能用来配置Notebook环境的Word版本是2000,2002,2003。
(2)Notebook的配置在Windows已经装有前述Word版本的前提下,在MATLAB中配置Notebook环境十分简便。
只要在MATLAB指令窗中运行以下指令,配置过程将自动进行。
notebook –setup假如指令窗中出现如下信息,就表示配置成功。
Setup complete8.1.2Notebook的启动一创建新的M-book文件(1)在Word 默认窗口(即Normal.dot)下创建新的M-book文档●选择Word 窗口的下拉菜单项{文件:新建} ;●在弹出的对话框中,选择“M-book”模板,按[确定] 键;●于是,Word 的窗口由原先的默认式样变成“M-book”式样(如图8.1-1所示),自动开启一个新的MATLAB作为其服务器,而不管此前Windows平台上是否已经开启了MATLAB。
MATLAB语言在开发连续梁桥顶推施工作者:梁爱斌王…文章来源:西安公路研究所点击数:530 更新时间:2019-1-7 [摘要]通过介绍MATLAB语言在顶推施工预应力混凝土连续桥施工过程内力动态分析程序设计中的应用,说明基于MATLAB语言开发结构分析软件的可行性和优越性。
关键词MATLAB语言顶推施工连续梁桥结构分析程序设计一、引言目前,常见的结构分析软件(程序)一般采用FORTRAN、C及可视化类语言中的一种或多种进行开发。
其开发周期一般较长、程序编制量大、程序的调试和测试较难实现,从而开发费用较高,而且在针对大型的数据处理和动态图形处理方面编程较复杂,尤其是采用多种语言进行混合或复合编程时,程序本身的调试和接口问题较为突出。
当然,这些语言有它们各自的优点,尤其表现在多语言的复合编程上,可将各语言的长处集于一身,并在一定程度上避免了使用它们有局限的方面。
在开发一个能对顶推法施工的连续梁桥进行施工全过程内力动态分析的软件时,尽管可采用FDRTRAN语言设计结构分析计算的基本模块,同时采用可视化类语言设计整个系统的基本控制模块这种优化方案,但它在结构的动态分析程序设计方面仍有两个大的难题:(1)大批量数据进行复杂的数值运算时程序较难设计和测试;(2)最终的计算结果进行可视化处理后形成实时动画较困难。
但用MATLAB进行整个程序的设计,上述两个问题即可迎刃而解。
二、MATLAB简介MATLAB是MathWorks公司于1982年推出的一套高性能的数值计算和可视化软件,它集数值分析、矩阵运算、信号处理和图形显示于一体,构成了一个方便且界面友好的用户环境。
在此环境下,对所要解决的许多问题,用户只需简单地列出数学表达式,其结果便会以数值和图形方式显示出来;对于大型问题,只需建立相应的数学模型,同样可以得到快速准确的解答。
其主要特点概括起来有以下几点:(l)MATLAB语言自带数值运算、矩阵运算方面的常规算法函数6000余条,并且具有自身的矩阵运算语法,使得一般的小型数据处理显得极为简单。
MATLAB简介1.MATLAB的概况MATLAB是矩阵实验室(Matrix Laboratory)之意。
除具备卓越的数值计算能力外,它还提供了专业水平的符号计算,文字处理,可视化建模仿真和实时控制等功能。
MATLAB的基本数据单位是矩阵,它的指令表达式与数学,工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完相同的事情简捷得多.当前流行的MATLAB 5.3/Simulink 3.0包括拥有数百个内部函数的主包和三十几种工具包(Toolbox).工具包又可以分为功能性工具包和学科工具包.功能工具包用来扩充MATLAB的符号计算,可视化建模仿真,文字处理及实时控制等功能.学科工具包是专业性比较强的工具包,控制工具包,信号处理工具包,通信工具包等都属于此类.开放性使MATLAB广受用户欢迎.除内部函数外,所有MATLAB主包文件和各种工具包都是可读可修改的文件,用户通过对源程序的修改或加入自己编写程序构造新的专用工具包.2.MATLAB产生的历史背景在70年代中期,Cleve Moler博士和其同事在美国国家科学基金的资助下开发了调用EISPACK和LINPACK的FORTRAN子程序库.EISPACK是特征值求解的FOETRAN程序库,LINPACK是解线性方程的程序库.在当时,这两个程序库代表矩阵运算的最高水平.到70年代后期,身为美国New Mexico大学计算机系系主任的Cleve Moler,在给学生讲授线性代数课程时,想教学生使用EISPACK和LINPACK程序库,但他发现学生用FORTRAN 编写接口程序很费时间,于是他开始自己动手,利用业余时间为学生编写EISPACK和LINPACK的接口程序.Cleve Moler给这个接口程序取名为MATLAB,该名为矩阵(matrix)和实验室(labotatory)两个英文单词的前三个字母的组合.在以后的数年里,MATLAB在多所大学里作为教学辅助软件使用,并作为面向大众的免费软件广为流传.1983年春天,Cleve Moler到Standford大学讲学,MATLAB深深地吸引了工程师John Little.John Little敏锐地觉察到MATLAB在工程领域的广阔前景.同年,他和Cleve Moler,Steve Bangert一起,用C语言开发了第二代专业版.这一代的MATLAB语言同时具备了数值计算和数据图示化的功能.1984年,Cleve Moler和John Little成立了Math Works公司,正式把MATLAB推向市场,并继续进行MATLAB的研究和开发.在当今30多个数学类科技应用软件中,就软件数学处理的原始内核而言,可分为两大类.一类是数值计算型软件,如MATLAB,Xmath,Gauss等,这类软件长于数值计算,对处理大批数据效率高;另一类是数学分析型软件,Mathematica,Maple等,这类软件以符号计算见长,能给出解析解和任意精确解,其缺点是处理大量数据时效率较低.MathWorks公司顺应多功能需求之潮流,在其卓越数值计算和图示能力的基础上,又率先在专业水平上开拓了其符号计算,文字处理,可视化建模和实时控制能力,开发了适合多学科,多部门要求的新一代科技应用软件MATLAB.经过多年的国际竞争,MATLAB以经占据了数值软件市场的主导地位.在MATLAB进入市场前,国际上的许多软件包都是直接以FORTRANC语言等编程语言开发的。
在word中运行Matlab【1】在Matlab目录下,找到m-book.dot文件,双击运行【2】如果禁用宏,改成运行宏【3】这时打开的word,有一个notebook的菜单【4】选中要运行的程序【5】在notebook中,点击define input cell,这时程序变绿色了【6】再在notebook中,点击evaluate calc zone,就运行了。
///////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////// //////////////////////////使用matlab的notebook技术可以方便的实现这个功能,但是使用notebook的前提是matlab必须处在打开状态,因此主要用来制作科技文档。
装完Word和matlab后,在matlab主环境下运行“notebook –setup”看到“notebook setup is complete”就是安装成功了。
在Word的normal.dot模板相同目录下会有一个m-book.dot的文件,所谓在word中使用matlab其实就是加载这个模板,可以手工启动matlab,然后输入“notebook”,但这个方法比较麻烦。
可以在Word->工具->模板和加载项->模板中添加这个文件,这样word主菜单上就多了一个Notebook菜单,写一个命令后选中命令文字,然后Notebook->define input cell,指明这是一个输入,然后Notebook->Evaluate Cell就可以求解了。
与matlab中一样,命令后以分号结尾,不显示输出。
///////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////// ///////////////////////////////Matlab的Notebook软件工具设置及程序运行博战捷摘要介绍了在Matlab中如何设置Notebook软件工具,将Matlab程序嵌入中文Word。
收稿日期:2000-02-25采用M AT LAB 语言开发连续梁桥顶推施工结构分析程序梁爱斌1 王春生2 徐 岳3(西安公路研究所1 西安710054) (长安大学2,3 西安710064)摘 要 文章介绍了MA T LAB 语言在顶推施工预应力混凝土连续梁桥施工过程内力动态分析程序设计中的应用,从而说明基于M A T LAB 语言开发结构分析软件的可行性与优越性。
关键词 M A T LAB 语言 顶推施工 连续梁桥 结构分析 程序设计Abstract :This paper introduces the application of MATLAB to prog ramming forcontinuous girder bridge by incremental lounching ,particularly fo r analy zing the course internal force dynamic analysis .Thus it illustrates the feasibility and advantage of devel -oping structure analy sis program with MALAB .Keywords :MATLAB lang uage ;incremental lounching ;continuous g irder bridge ;structure analysis ;program design1 M A TLAB 简介M ATLAB 是MathWo rks 公司于1982年推出的一套高性能的数值计算和可视化软件,它集数值分析、矩阵运算、信号处理和图形显示及处理于一体,构成了一个方便且界面友好的用户环境,在此环境下,对所要解决的许多问题,用户只需简单的列出数学表达式,其结果便会以数值和图形方式显示出来;对于大型问题,只需建立相应的数学模型,同样可以得到快速准确的解答。
MATLAB与Word混合使用MATLAB提供notebook将Microsoft Word和MA TLAB完美结合,即在编辑Word文档时利用MATLAB资源,包括科学计算和绘图功能,这样的文件也叫M-book文档。
其工作原理是:首先在Word文档中创建命令,然后传递给MATLAB进行后台处理,最后将后台处理结果回传到Word中。
1、notebook的安装和使用在MA TLAB中使用notebook的前提是已经安装了Microsoft Word系列产品中的一个。
在命令窗口输入如下语句:notebook –setup即完成安装。
在命令窗口输入如下语句:Notebook可以新建一个M-book文档。
通过下面的方式打开一个已有的M-book文档:notebook path\filename.doc2、notebook的实际应用在M-book文档中包括普通的文字,还包括需要和MATLAB交互的文字。
notebook将与MATLAB交互文字的基本单位称为细胞,细胞可以是表达式,也可以是程序。
notebook提供了选择细胞和运行细胞的功能,并将MATLAB运算结果以细胞保存。
例1:利用notebook建立MATLAB内置函数cylinder函数的学习手册,该函数用于绘制柱体或椎体。
首先新建一个M-book文档,输入以下内容,并保存为mynotebook.doc然后选中如下文字:R = [2 2]N = 10cylinder(R,N)从notebook菜单中选择“define input cell”定义细胞,此时可以看到选中的部分变成绿色,然后从notebook菜单中选择“evaluate cell”执行细胞,得到如下结果:继续输入指定文字,并按照上述方法定义和执行细胞,可以得到如下结果:以上可以看出,M-book文档可以绘制图形,执行表达式和程序,同时内部保存变量值,以供后面调用。
需要注意的事项:1)clear、save等命令是可以执行的,且含义同MA TLAB中的一致,但有些命令是不可以执行的,如clc命令不会将前面的文字和细胞清空。
MATLAB入门教程1.MATLAB的基本知识1-1、基本运算与函数在MATLAB下进行基本数学运算,只需将运算式直接打入提示号(〉〉)之後,并按入Enter键即可.例如:〉> (5*2+1。
3—0.8)*10/25ans =4。
2000MATLAB会将运算结果直接存入一变数ans,代表MATLAB运算後的答案(Answer)并显示其数值於萤幕上。
小提示:”>>”是MATLAB的提示符号(Prompt),但在PC中文视窗系统下,由於编码方式不同,此提示符号常会消失不见,但这并不会影响到MATLAB的运算结果。
我们也可将上述运算式的结果设定给另一个变数x:x = (5*2+1。
3—0。
8)*10^2/25x = 42此时MATLAB会直接显示x的值。
由上例可知,MATLAB认识所有一般常用到的加(+)、减(-)、乘(*)、除(/)的数学运算符号,以及幂次运算(^)。
小提示:MATLAB将所有变数均存成double的形式,所以不需经过变数宣告(Variable declaration)。
MATLAB同时也会自动进行记忆体的使用和回收,而不必像C语言,必须由使用者一一指定。
这些功能使的MATLAB易学易用,使用者可专心致力於撰写程式,而不必被软体枝节问题所干扰.若不想让MATLAB每次都显示运算结果,只需在运算式最後加上分号(;)即可,如下例:y = sin(10)*exp(—0。
3*4^2);若要显示变数y的值,直接键入y即可:>>yy =-0.0045在上例中,sin是正弦函数,exp是指数函数,这些都是MATLAB常用到的数学函数.下表即为MATLAB常用的基本数学函数及三角函数:小整理:MATLAB常用的基本数学函数abs(x):纯量的绝对值或向量的长度angle(z):复数z的相角(Phase angle)sqrt(x):开平方real(z):复数z的实部imag(z):复数z的虚部conj(z):复数z的共轭复数round(x):四舍五入至最近整数fix(x):无论正负,舍去小数至最近整数floor(x):地板函数,即舍去正小数至最近整数ceil(x):天花板函数,即加入正小数至最近整数rat(x):将实数x化为分数表示rats(x):将实数x化为多项分数展开sign(x):符号函数(Signum function)。
一.多项式拟合多项式拟合是多项式运算的一个重要组成部分,在工程及科研工作中都等到了广泛的应用。
其实现一方面可以由矩阵的除法求解超定方程来进行;另一方面在MATLAB中还提供了专门的拟合函数polyfit,其常用调用格式如下:polyfit(X,Y,n):其中X,Y为拟合数据,n为拟合多项式的阶数。
[p,s]=polyfit(X,Y,n):其中p为拟合多项式系数常量,s为拟合多项式系数常量的结构信息。
1.用5阶多项式对[0,pi/2]上的正弦函数进行最小二乘拟合。
x=0:pi/20:pi/2;y=sin(x);a=polyfit(x,y,5);x1=0:pi/30:pi*2;y1=sin(x1);y2=a(1)*x1.^5+a(2)*x1.^4+a(3)*x1.^3+a(4)*x1.^2+a(5)*x1+a(6);plot(x1,y1,'b-',x1,y2,'r*')legend('原曲线','拟合曲线')axis([0,7,-1.2,4])012345672.设原始数据为x,在11个点上测得的y值如下:X=[-2.0 -1.6 -1.2 -0.8 -0.4 0 0.4 0.8 1.2 1.6 2.0];Y=[2.8 2.96 2.54 3.44 3.56 5.4 6.0 8.4 9.5 13.3 15];采用2阶和10阶多项式拟合,并画图比较x=[-2.0 -1.6 -1.2 -0.8 -0.4 0 0.4 0.8 1.2 1.6 2.0];y=[2.8 2.96 2.54 3.44 3.56 5.4 6.0 8.4 9.5 13.3 15];a=polyfit(x,y,2);x1=-2:0.01:2;y2=a(1)*x1.^2+a(2)*x1+a(3);plot(x,y,'b-',x1,y2,'r--')x=[-2.0 -1.6 -1.2 -0.8 -0.4 0 0.4 0.8 1.2 1.6 2.0];y=[2.8 2.96 2.54 3.44 3.56 5.4 6.0 8.4 9.5 13.3 15];a=polyfit(x,y,10);x1=-2:0.01:2;y2=a(1)*x1.^10+a(2)*x1.^9+a(3)*x1.^8+a(4)*x1.^7+a(5)*x1.^6+a(6)*x1.^5 +a(7)*x1.^4+a(8)*x1.^3+a(9)*x1.^2+a(10)*x1+a(11);)plot(x,y,'b-',x1,y2,'r--'二.图形的保持与子图1.在4个子图中绘制不同的三角函数图。
第三章连续梁程序的编制与使用入结构力学领域中而产生的一种方法,而Matlab语言正是进行矩阵运算的强大工具,因此,用Matlab语言编写结构力学程序有更大的优越性。
本章将详细介绍如何利用Matlab语言编制连续梁结构的计算程序。
矩阵位移法的解题思路是将结构离散为单元(杆件),建立单元杆端力与杆端位移之间的关系-单元刚度方程;再将各单元集成为原结构,在满足变形连续条件和平衡条件时,建立整体刚度方程;在边界条件处理完毕后,由整体刚度方程解出节点位移,进而求出结构内力。
用矩阵位移法计算连续梁的步骤如下:1)整理原始数据,如材料性质、荷载条件、约束条件等,并进行编码:单元编码、结点编码、结点位移编码、选取坐标系。
2)建立局部坐标系下的单元刚度矩阵。
3)建立整体坐标系下的单元刚度矩阵。
4)集成总刚。
5)建立整体结构的等效节点荷载和总荷载矩阵6)边界条件处理。
7)解方程,求出节点位移。
8)求出各单元的杆端内力。
实际上,上述步骤也是编制Matlab程序的基本步骤,在求出计算结果后,还可以利用Matlab的绘图功能绘制结构图、内力图、变形图等等。
图3-1程序流程图3.1 程序说明%******************************************************************* % 矩阵位移法解连续梁主程序%******************************************************************* ●功能:运用矩阵位移法解连续梁的基本原理编制的计算主程序。
●基本思想:结点(结点位移)编码默认为从左至右,从1开始顺序进行;杆端弯矩的方向默认为逆时针。
●荷载类型:可计算结点荷载,每单元作用的跨中集中力和均布荷载。
●说明:主程序的作用是通过赋值语句、读取和写入文件、函数调用等完成算法的全过程,即实现程序流程图的程序表达。
%-----------------------------------------------------------------------------------------------------1 程序准备format short e %设定输出类型clear all %清除所有已定义变量clc %清屏●说明:format short e -设定计算过程中显示在屏幕上的数字类型为短格式、科学计数法;clear all -清除所有已定义变量,目的是在本程序的运行过程中,不会发生变量名相同等可能使计算出错的情况;clc -清屏,使屏幕在本程序运行开始时%-----------------------------------------------------------------------------------------------------2 打开文件FP1=fopen('input.txt','rt'); %打开输入数据文件存放初始数据FP2=fopen('output.txt','wt'); %打开输出数据文件存放计算结果●说明:FP1=fopen('input.txt','rt'); -打开已存在的输入数据文件input.txt,且设置其为只读格式,使程序在执行过程中不能改变输入文件中的数值,并用文件句柄FP1来FP2=fopen('output.txt','wt'); -打开输出数据文件,该文件不存在时,通过此命令创建新文件,该文件存在时则将原有内容全部删除。
该文件设置为可写格式,可在程序执行过程中向输出文件写入数据。
%-----------------------------------------------------------------------------------------------------3 读入程序控制信息NELEM =fscanf(FP1,'%d',1); %单元个数(单元编码总数)NPOIN =fscanf(FP1,'%d',1); %结点个数(结点编码总数)NVFIX =fscanf(FP1,'%d',1); %约束个数(零位移总数)NFPOIN=fscanf(FP1,'%d',1); %结点荷载个数(作用在结点上集中力偶总数)NFPRES=fscanf(FP1,'%d',1); %非结点荷载数(作用在单元上分布荷载总数)YOUNG=fscanf(FP1,'%f',1); %弹性模量●说明:从输入文件FP1中读入单元个数,结点个数,约束个数,结点荷载个数,非结点荷载个数,弹性模量;程序中弹性模量仅输入了一个值,表明本程序仅能求解一种材料构成的结构,如:钢筋混凝土结构、钢结构,不能求解钢筋混凝土-钢组合结构。
采用了命令fscanf,其中:’%d’表示读入整数格式;1表示读取1个数。
%------------------------------------------------------------------------------------------fprintf(FP2,'\n 结构初始数据\n\n');fprintf(FP2,' 单元总数=%d 结点总数=%d 约束总数=%d \n',NELEM,NPOIN,NVFIX);fprintf(FP2,' 结点荷载个数=%d 非结点荷载个数=%d 弹性模量=%12.5g \n',NFPOIN,NFPRES,YOUNG);●说明:在输出文件FP2中显示输入的控制信息,便于程序执行完毕后,从输出文件中查找输入错误。
采用了命令fprintf,其中:\n为换行标志,表示换一行;%12.5g表示输出12位且有5位小数的实数。
括在引号中的信息' 单元总数=%d 结点总数=%d 约束总数=%d \n'为输出到FP2文件中时的格式,其后的变量表NELEM,NPOIN,NVFIX依次将其代表的数值输出到%d所对应的位置。
%-----------------------------------------------------------------------------------------------------4 调用读取初始数据函数,生成结构信息[LNODS,COORD,FPOIN,FPRES,FIXED]=…ele_INITIALDATA (FP1,FP2,NELEM,NPOIN,NFPOIN,NFPRES,NVFIX);%-----------------------------------------------------------------------------------------------------5 调用总刚计算函数,生成单刚并集成总刚[HK] = ele_HK(NPOIN,NELEM,LNODS,COORD,YOUNG);%-----------------------------------------------------------------------------------------------------6调用荷载计算函数,由结点荷载与非结点荷载生成总荷载向量列阵[FORCE] = …ele_FORCE(NPOIN,NFPOIN,FPOIN,NFPRES,FPRES,LNODS,COORD);%-----------------------------------------------------------------------------------------------------7调用边界条件处理函数,总刚、总荷载进行边界条件处理[HK,FORCE] = ele_BOUNDARY(NVFIX,FIXED,HK,FORCE);%-----------------------------------------------------------------------------------------------------8 方程求解DISP=zeros(NPOIN,1); %建立并初始化结构的结点位移列矩阵DISP=HK\FORCE; %计算出结构所有的结点位移%-----------------------------------------------------------------------------------------------------9调用单元杆端力计算函数,求单元杆端力[FE] = ele_MOMENTS(FP2,NPOIN,DISP,NELEM,LNODS,…COORD,YOUNG,NFPRES,FPRES);%*******************************************************************10 关闭输出数据文件fclose(FP2);%******************************************************************* % 读取初始数据函数ele_INITIALDATA%******************************************************************* % 入口参数:FP1,FP2,NELEM,NPOIN,NFPOIN,NFPRES,NVFIX% 出口参数:LNODS,COORD,FPOIN,FPRES,FIXED%------------------------------------------------------------------------------------------function [LNODS,COORD,FPOIN,FPRES,FIXED]=…ele_INITIALDATA(FP1,FP2,NELEM,NPOIN,NFPOIN,NFPRES,NVF IX)●说明:FP1-文件句柄,指示输入数据文件;FP2-文件句柄,指示输出数据文件;%------------------------------------------------------------------------------------------% 读取结构信息LNODS=fscanf(FP1,'%f',[3,NELEM])';●说明:建立LNODS矩阵,该矩阵指出了每一单元的连接信息和惯性矩。