当前位置:文档之家› Comsol和matlab联合仿真

Comsol和matlab联合仿真

Comsol和matlab联合仿真
Comsol和matlab联合仿真

如果说matlab在解偏微分方程时,性能不佳,那么comsol则很好地互补上了。当然,更好的消息就是这两个软件的连接比较简单,互相调用方便。

COMSOL公司是全球多物理场建模与仿真解决方案的提倡者和领导者,其旗舰产品COMSOL Multiphysics,使工程师和科学家们可以通过模拟,赋予设计理念以生命。它有无与伦比的能力,使所有的物理现象可以在计算机上完美重现。COMSOL的用户利用它提高了手机的接收性能,利用它改进医疗设备的性能并提供更准确的诊断,利用它使汽车和飞机变得更加安全和节能,利用它寻找新能源,利用它探索宇宙,甚至利用它去培养下一代的科学家。

COMSOL Multiphysics起源于MATLAB的Toolbox,最初命名为Toolbox

1.0。后来改名为Femlab

1.0(FEM为有限元,LAB是取自于Matlab),这个名字也一直沿用到Femlab3.1。从2003年3.2a版本开始,正式命名为COMSOL Multiphysics。

一看这两软件这么有渊源,就知道联合仿真,有戏。具体实现步骤如下

1.系统配置

32位win7,matlab2011b,comsol4.2

安装comsol时候,有一步骤中要选择matlab

live,然后点进去修改matlab的目录,要到bin目录,这样安装完之后,桌面上会多出来一个快捷方式 COMSOL 4.2 with

MATLAB ,如图所示。如果第一次安装时候没注意,那么可以重新运行安装程序,选择修复即可。

2.双击COMSOL 4.2 with MATLAB

此时弹出一个黑色的框,这个是java的框?不太清楚,不过不用管,最小化就是。

然后matlab会自动启动,并且启动后会弹出几行字,如图所示

3.此时在matlab中输入一些命令就可以调用comsol了!例如输入

import https://www.doczj.com/doc/592424597.html,sol.model.*

import https://www.doczj.com/doc/592424597.html,sol.model.util.*

model = ModelUtil.create('Model');

model.modelPath('D:\Program Files\MATLAB\halleyhit');

model.modelNode.create('mod1');

model.geom.create('geom1', 3);

model.mesh.create('mesh1', 'geom1');

model.physics.create('es', 'Electrostatics', 'geom1');

等等,就是在comsol中建立一些模型,话一些形体,然后可以再加边界条件,加求解范围,开始求解,显示结果等等等等。总之,你在comsol中的每一步操作,都可以在matlab中转化成一行命令。

至此,matlab调用comsol完成。这样做的意义呢~就是comsol中建立复杂形体,比如1000个排列整齐的圆球,comsol画图会疯的,cad导入或许是个不错的方法,可是如何加边界条件呢?于是matlab的for循环就大大简化了这部分工作量。至于,comsol中的一个操作,转换成一行代码,语法如何呢?这里可以有个简单的方法,就是在comsol中操作,然后file菜单下save as m

file,在matlab中打开file就知道刚才所有的操作了,如果comsol中操作一次,就在m文件中查看一次,那么很快就能知道每一条命令的语法了。

以上是基于matlab调用comsol,而对于喜欢comsol界面的人来说,在comsol中调用matla b文件也是可以的。操作如下:

1.双击COMSOL 4.2 with MATLAB

2.双击comsol

此时,matlab和comsol的界面都出现了

3.在matlab中运行需要导入到comsol的m文件

https://www.doczj.com/doc/592424597.html,sol中,file菜单下,client server下,import

此时,用对话框中的默认设置即可,确定后,刚才的m文件就导入完成了,后续操作可以在comsol中操作。

以上!~特别感谢实验室学弟。说实话,我和导师一样,很少对一个人如此盛赞,不过这个的确是很强大,同样的问题,我搜索帮助文档,弄了一个月,无功而返。而小学弟因为对comsol比较了解,搞了一天,就凭借其直觉搞定了!大大大大大大大大大大大大地赞一下~

matlab中常见函数功用

⊙在matlab中clear,clc,clf,hold作用介绍 clear是清变量, clc只清屏, clf清除图形窗口上的旧图形, hold on是为了显示多幅图像时,防止新的窗口替代旧的窗口。 ①format:设置输出格式 对浮点性变量,缺省为format short. format并不影响matlab如何计算和存储变量的值。对浮点型变量的计算,即单精度或双精度,按合适的浮点精度进行,而不论变量是如何显示的。对整型变量采用整型数据。整型变量总是根据不同的类(class)以合适的数据位显示,例如,3位数字显示显示int8范围-128:127。 format short, long不影响整型变量的显示。 format long 显示15位双精度,7为单精度(scaled fixed point) format short 显示5位(scaled fixed point format with 5 digits) format short eng 至少5位加3位指数 format long eng 16位加至少3位指数 format hex 十六进制 format bank 2个十进制位 format + 正、负或零 format rat 有理数近似 format short 缺省显示 format long g 对双精度,显示15位定点或浮点格式,对单精度,显示7位定点或浮点格式。 format short g 5位定点或浮点格式 format short e 5位浮点格式 format long e 双精度为15位浮点格式,单精度为7为浮点格式 ②plot函数 基本形式 >> y=[0 0.58 0.70 0.95 0.83 0.25]; >> plot(y) 生成的图形是以序号为横坐标、数组y的数值为纵坐标画出的折线。 >> x=linspace(0,2*pi,30); % 生成一组线性等距的数值 >> y=sin(x); >> plot(x,y) 生成的图形是上30个点连成的光滑的正弦曲线。 多重线 在同一个画面上可以画许多条曲线,只需多给出几个数组,例如 >> x=0:pi/15:2*pi; >> y=sin(x); >> w=cos(x);

基于COMSOL的声悬浮模拟仿真

基于COMSOL的声悬浮模拟仿真 发表时间:2018-11-15T11:43:16.157Z 来源:《科技新时代》2018年9期作者:卜艺浦 [导读] 本文主要研究超声悬浮中液滴的悬浮情况,利用COMSOL有限元分析软件建立超声悬浮仪器的物理模型 江苏省泰兴中学江苏泰兴 225400 摘要:本文主要研究超声悬浮中液滴的悬浮情况,利用COMSOL有限元分析软件建立超声悬浮仪器的物理模型,模拟驻波悬浮的声场,从而得到声压与声压级的分布频域。通过改变悬浮液滴的形状和尺寸,发现声压分布随着液滴参数的变化而发生相应的改变。通过研究液滴并对这些液滴在声场中的声压分布进行分析,最终得出液滴在驻波场中稳定悬浮所需的条件。 关键词:声悬浮;声压;声辐射力;液滴;COMSOL有限元分析软件 1. 引言 超声悬浮是实现无容器环境的一种方便快捷的技术,无容器环境对于材料、生化分析和样品制备非常重要,因为它避免了样品与容器壁的接触,从而隔绝了众多污染源。相较于其他类型的悬浮,声悬浮具有很多方面的优势。与磁悬浮和电悬浮相比,声悬浮技术对样品是否带电或是否具有磁性没有要求,也不会使样品产生热效应;对比光悬浮,声悬浮不必特意使用特定材质样品,比如石墨烯等,也能产生较大的悬浮力;声悬浮也比气流悬浮技术更稳定可控。另外,声悬浮可广泛应用于蛋白质结晶、液态合金深过冷快速凝固研究、液滴动力学、微剂量生化研究,以及胶体液滴的干燥等领域[1]。 超声悬浮一般分为有两种,一种为超声近场悬浮[2],另一种是驻波悬浮[3]。所谓近场悬浮,就是依靠物体下方发射器发射高频声场产生声辐射力与物体自身重力平衡使物体悬浮,这种悬浮方式多应用于无接触条件下移动物体的研究。驻波悬浮仪器一般由超声波发射器、换能器、变幅杆、发射端、反射端、石英管及调谐机构组成,在发射端与反射端之间形成驻波场,从而产生声辐射力使物体悬浮。所谓驻波,就是指振幅相同、传输方向相反的两个波共同形成的波,也就会有两个方向相反的压强,对其中的物体产生方向相反的两个力。一般地,两个声波产生的声压相抵消,和压为0的位置称为波节点,悬浮样品在波节点处受到声辐射力与重力相抵消而稳定悬浮。声悬浮仪器产生的声驻波就是这样与物体相互作用,同时水平方向的声辐射力作为定位力把悬浮物固定悬浮于驻波场的波节点处。驻波产生的声辐射力与(R/λ)3成正比,行波与(R/λ)6成正比,其中R表示物体尺寸,λ表示波长,声悬浮一般要求物体尺寸远小于半波长,因此驻波产生的力比行波大得多[4]。 目前声悬浮技术只能悬浮一些体型质量较小的样品,不能悬浮体型质量较大的物体,这也就造成实验应用的局限性,无法应用于大物体或大剂量的实验。尽管近场悬浮技术有望能在目标质量与尺寸的限制上有所突破,但其技术还不够完善。驻波悬浮技术,相较于近场悬浮,已经是比较成熟的声悬浮技术,能够悬浮密度最大的元素铱并已经在生物医学等领域得到应用[5]。 另外,液滴是自然界中常见的流体单元,可以作为研究对象或实验载体。在生物化学反应中,液滴可作为微反应溶器或是微生物的培养基;在工业应用中,液滴性质影响着液态合金的深过冷快速凝固。换言之,液滴的力学行为对实际应用产生重大影响。为了分析液滴在无容器环境中的力学行为,本文利用COMSOL有限元分析软件对液滴在声场中进行模拟实验,并进行了相关理论分析和总结。 2. 声悬浮对液滴形态的影响 2.1 COMSOL模拟计算方法 COMSOL有限元分析软件是可以分析耦合物理场的软件。利用COMSOL有限元分析软件的模拟仿真,可以更加直观的观察到一些物理现象,更加方便地得到相关的实验数据,并随时作出参数的调整。利用其进行仿真模拟,能为现实中的实验提供理论数据依据。该软件模拟研究声悬浮技术,由一个声波发射传感器和弧型反射面构成,需要设定一些必要的参数,比如声场频率f0,发射端与反射端的距离H,发射器宽度Dr等(见表1),建立声悬浮模型(如图1)。通过网格构建划分,以有限元分析法便可以计算出驻波场的声压分布,悬浮样品

matlab基本函数的用法

一. Matlab中常见函数基本用法 1.sum (1 )sum(A)A为矩阵得出A矩阵每列的和组成的一个矢量; A为矢量得出A的各元 素之和 (2)sum(diag(A))得矩阵A的对角元素之和 (3)sum(A,dim) A为矩阵,sum(A,1)按列求和;sum(A,2)按行求和 2.max(min) (1)max(A) 若A为矩阵则得出A矩阵每列的最大元素组成的一个矢量 若A为矢量则得出A中最大的元 (2)max(A,B) A与B为同维矩阵得出取A 与B中相同位置元素中较大者组成的新矩阵 (3)max(A,[],dim) max(a,[ ],1),求每列的最大值;max(a,[ ],2)求每行的最大值 3.find (1)find(X)若X为行向量则得出X中所有非零元素所在的位置(按行)若X为列向量或矩阵则得出X中所有非零元素的位置(按列)(2)ind = find(X, k)/ind = find(X,k,'first') 返回前k个非零元的指标ind = find(X,k,'last') 返回后k个非零元的指标 (3)[row,col] = find(X) row代表行指标,col代表列指标 [row,col,val] = find(X) val表示查找到对应位置非零元的值 [row,col] = find(A>100 & A<1000) 找出满足一定要求的元素 4.reshape (1)B = reshape(A,m,n) 把A变成m*n的矩阵 5.sort (1)B = sort(A) 把A的元素按每列从小到大的顺序排列组成新矩阵

(2)B = sort(A,dim) dim=1同(1); dim=2 把A按每行从小到大的顺序排列组成新矩阵 6.cat (1)C = cat(dim, A, B) dim=1相当于[A;B];dim=2相当于[A,B] (2)C = cat(dim, A1, A2, A3, A4, ...) 类推(1) 7.meshgrid (1)[X,Y] = meshgrid(x,y) 将向量x和y定义的区域转换成矩阵X和Y,矩阵X的行向量是向量x的简单复制,而矩阵Y的列向量是向量y的简单复制。(2)[X,Y] = meshgrid(x) (1)y=x中情形 8.diag (1)X = diag(v,k) 向量v作为X的第k对角线上的元素X的其他元素为零(2)X = diag(v) (1)中k=0的情况 (2)v = diag(X,k) v为矩阵X的第k对角线的元素组成的列向量 (4)v = diag(X) (3)中k等于零的情况

基于comsol的悬臂梁形变实验报告

基于comsol4.2的悬臂梁形变仿真 参考文献:Becker,A.A.,Background to Finite Element Analysis of Geometric Non-linearity Benchmarks,NAFEMS,Ref: -R0065,Glasgow. 一、创建工程 1、选择空间维度:二维。如图一 图一 2、增加物理场:结构力学—>固体力学(solid)。如图二 图二

3、选择求解类型:稳态。如图三 图三 4、点击“完成”,按钮位于“模型向导”栏右上角的符号。 二、创建几何模型 1、单击“几何”,将“长度单位”改为um。如图四 图四

2、右键“几何”,选择“矩形”,设置矩形参数如图五,并单击设定栏右上角的“创建选定”,生成图形。 图五 三、设定材料参数 右键“材料”,选择“材料”,几何是实体选择如图六。在材料目录中添加材料的杨氏模量、泊松比、密度,具体参数如图七。 图六

图七 四、设置边界约束 1、单击“固体力学”,在厚度中输入“10e-6”,如图八。 图八 2、右键“固体力学”,选择“固定约束”,添加边界选择:1,如图九。 图九

3、右键“固体力学”,选择“边界载荷”,添加边界选择:4,将力—>载荷中,X和Y方向的力分别改为:-3.844e6/0.1*load_para和-3.844e3/0.1如图十。 图十 五、划分网格 右键网格,选择“自由剖分三角形网格”,在设定栏右上角点击“创建所有”,如图十一。 图十一

六、设置求解约束 1、打开“求解”下拉菜单,右键“求解器配置”,选择“缺省求解器”,如图十二。 图十二 2、点击“稳态求解器”,将“相对容差”改为:1e-6,如图十三。 图十三 3、右键“稳态求解器”,选择“参数的”,在设定栏输入参数名称:load_para和参数值:range(0,0.01,1),如图十四

COMSOL-Multiphysics仿真步骤

COMSOL Multiphysics仿真步骤 1算例介绍 一电磁铁模型截面及几何尺寸如图1所示,铁芯为软铁,磁化曲线(B-H)曲线如图2所示,励磁电流密度J=250 A/cm2。现需分析磁铁内的磁场分布。 图1电磁铁模型截面图(单位cm) 图2铁芯磁化曲线 2 COMSOL Multiphysics仿真步骤 根据磁场计算原理,结合算例特点,在COMSOL Multiphysics中实现仿真。 (1) 设定物理场 COMSOL Multiphysics 4.0以上的版本中,在AC/DC模块下自定义有8种应用模式,分别为:静电场(es)、电流(es)、电流-壳(ecs)、磁场(mf)、磁场和电场(mef)、带电粒子追踪(cpt)、电路(cir)、磁场-无电流(mfnc)。其中,“磁场(mef)”是以磁矢势A作为因变量,可应用于: ①已知电流分布的DC线圈; ②电流趋于表面的高频AC线圈;

③任意时变电流下的电场和磁场分布; 根据所要解决的问题的特点——分析磁铁在线圈通电情况下的电磁场分布,选择2维“磁场(mf)”应用模式,稳态求解类型。 (2) 建立几何模型 根据图1,在COMSOL Multiphysics中建立等比例的几何模型,如图3所示。 图3几何模型 有限元仿真是针对封闭区域,因此在磁铁外添加空气域,包围磁铁。 由于磁铁的磁导率,因此空气域的外轮廓线可以理想地认为与磁场线迹线重合,并设为磁位的参考点,即 (21) 式中,L为空气外边界。 (3) 设置分析条件 ①材料属性 本算例中涉及到的材料有空气和磁铁,在软件自带的材料库中选取Air和Soft Iron。 对于磁铁的B-H曲线,在该节点下将已定义的离散B-H曲线表单导入其中即可。 ②边界条件 由于磁铁的磁导率,因此空气域的外轮廓线可以理想地认为与磁场线迹线重合,并设为磁位的参考点,即 (21) 式中,L为空气外边界。 为引入磁铁的B-H曲线,除在材料属性节点下导入B-H表单之外,还需在“磁场(mef)”节点下选择“安培定律”,域为“2”,即磁铁区域,在“磁场 > 本构关系”处将本构关系选择为“H-B曲线”。此时,即表示将材料性质表达为磁通密度B的函数,也符合以磁矢势A作为因变量时的表达,从而避免在本构关系中定义循环变量。设置窗口如下图所示。

基于comsol的仿真实验

一、实验目的 熟悉掌握COMSOL Multiphysics软件,通过3D有限元建模方法,建立铂电极-玻璃体-视网膜的分层电刺激模型。深入研究电极如何影响电刺激效果,系统的分析了电极尺寸、电极到视网膜表面的距离等参数对视网膜电刺激的影响,为视网膜视觉假体刺激电极的刺激效果提供指导意义,进一步优化电刺激效果,达到提高人工视觉的修复效果。 二、实验仪器设备 计算机,COMSOL Multiphysics软件 三、实验原理 影响视网膜电刺激效果的因素有许多:电极尺寸、电极距视网膜距离、电极形状、电极排列等,这里主要从电极尺寸,电极距视网膜距离来探讨。视网膜电刺激模型通过参考视网膜解剖结构构建,电刺激的有效响应区域取决于神经节细胞层(GCL)电场强度是否大于1000V/m,当大于该值时认为该区域神经节细胞能够兴奋,进而指导电极尺寸、电极距视网膜距离的参数。 四、实验内容 根据视网膜的解剖结构来构建相应的视网膜分层模型,模型总共分为8层:玻璃体层,神经节细胞层,内网状层,内核层,外网状层,外核层,视网膜下区域,色素上皮层,脉络膜及巩膜。根据视网膜各层的导电特性来设定相应的导电率,模型构建,设置边界条件。在电极处施加相应电流刺激,规定神经节细胞层(GCL)电场强度(>1000V/m)时认为能够引起视神经细胞兴奋,在确定的电流强度下,神经节细胞层(GCL)层电场强度大于1000V/m的区域认为有效响应区域,进而判断电极刺激的有效响应区域,指导电极尺寸r和电极距视网膜距离h等参数设置。其具体实验步骤如下所示: 1、根据视网膜的解剖特性构建视网膜分层模型。模型在三维模式下电磁场子目录下的传导介质DC场下建立。进入建模窗口后,在绘图栏下设置模型为圆柱体,输入各部分的长宽高数值,轴基准点为圆柱体的圆心坐标。模型分为9层(11个求解域),其示图如下:

Matlab中常见数学函数的使用

给自己看的----Matlab 的内部常数(转) 2008/06/19 14:01 [Ctrl C/V--学校 ] MATLAB 基本知识 Matlab 的内部常数 pi 圆周率 exp(1) 自然对数的底数e i 或j 虚数单位 Inf 或 inf 无穷大 Matlab 的常用内部数学函数

我们也可在matlab中调用maple的命令进行多项式的运算,调用格式如下: maple(’maple中多项式的运算命令’) 如何用matlab进行分式运算 发现matlab只有一条处理分式问题的命令,其使用格式如下: [n,d]=numden(f)把符号表达式f化简为有理形式,其中分子和分母的系数为整数且分子分母不含公约项,返回结果n为分子,d为分母。注意:f必须为符号表达式 不过我们可以调用maple的命令,调用方法如下: maple(’denom(f)’)提取分式f的分母 maple(’numer(f)’)提取分式f的分子 maple(’normal(f)’ ) 把分式f的分子与分母约分成最简形式 maple(’expand(f)’) 把分式f的分子展开,分母不变且被看成单项。 maple(’factor(f)’) 把分式f的分母和分子因式分解,并进行约分。 如何用Matlab进行因式分解 syms 表达式中包含的变量factor(表达式) 如何用Matlab展开 syms 表达式中包含的变量expand(表达式) 如何用Matlab进行化简 syms 表达式中包含的变量simplify(表达式) 如何用Matlab合并同类项 syms 表达式中包含的变量collect(表达式,指定的变量) 如何用Matlab进行数学式的转换 调用Maple中数学式的转换命令,调用格式如下: maple(‘Maple的数学式转换命令’) 即:maple(‘convert(表达式,form)’)将表达式转换成form的表示方式 maple(‘convert(表达式,form, x)’)指定变量为x,将依赖于变量x的函数转换成form的表示方式(此指令仅对form为exp与sincos的转换式有用) 如何用Matlab进行变量替换 syms 表达式和代换式中包含的所有变量subs(表达式,要替换的变量或式子,代换式) 如何用matlab进行复数运算 a+b*i 或 a +b*j表示复数a+bi 或a+bj real(z)求复数z的实部 imag(z)求复数z的虚部 abs(z)求复数z的模 angle(z)求复数z的辐角, conj(z)求复数z的共轭复数 exp(z)复数的指数函数,表示e^z 如何在matlab中表示集合 [a, b, c,…] 表示由a, b, c,…组成的集合(注意:元素之间也可用空格隔开) unique(A) 表示集合A的最小等效集合(每个元素只出现一次) 也可调用maple的命令,格式如下: maple('{a, b, c,…}')表示由a, b, c,…组成的集合 下列命令可以生成特殊的集合: maple(‘{seq(f(i),i=n..m)}’)生成集合{f(n), f(n+1), f(n+2), … , f(m)} 如何用Matlab求集合的交集、并集、差集和补集

MATLAB函数的调用形式

MATLAB中函数的调用形式MATLAB软件是一种可用于科技开发的高效率工具软件,它将科学计算、函数绘图与快速编程集于一体,不仅功能强大,而且易学易用,深受广大科技工作者和理工科大学生的喜爱。正在逐渐成为理工科大学生必须掌握的基本工具。 1.求函数导数的命令,调用格式是: (1)y=diff(‘f(x)’) (2)diff(‘f(x)’) (3)y=’ f(x)’ ;diff(y,’x’) (4)syms 各种变量; y=f(x);diff(y,x) 一般调用格式是: diff(y,x,n) 2.定义符号变量,一般形式: syms x y a b t 注解: syms是定义符号变量的命令, 被定义的多个变量之间用空格隔开。 3.转变一个符号表达式S的显示形式: pretty(S) 注解:pretty(S)的作用是将符号表达式S显示成更符合数学习惯的形式。 4.输入格式: fplot (‘f(x)’,[X的左界,X的右界,Y的左界,Y 的右界] 注意:●在书写运算语句时,屏幕的同一行可以同时有多个语句, 但语句之间必须用逗号或分号隔开; ●命令语句以分号结尾时,屏幕不显示运行结果; ●命令语句以逗号或不用标点结尾时,屏幕将显示运行结果。

a=100/12 %显示格式为默认的短型实数格式 format rat %显示格式转换为有理格式a format long %显示格式转换为长型实数格式 a format %还原为默认的短型实数格

5.使用clear命令可以删除所有定义过的变量, 如果只是要删除其中的某几个变量,则应在clear后面指明要删除的变量名称。 6.使用clc 命令可以清除屏幕上所有显示的内容, 但不会删除内存中的变量 7.MATLAB提供了大量的函数,可以满足各种运算需要。(1)使用命令help elfun 可列出所有的初等数学函数名。(2)使用命令help elmat可列出大量的矩阵函数名。

COMSOL光学案例

Modeling of Pyramidal Absorbers for an Anechoic Chamber Introduction In this example, a microwave absorber is constructed from an infinite 2D array of pyramidal lossy structures. Pyramidal absorbers with radiation-absorbent material (RAM) are commonly used in anechoic chambers for electromagnetic wave measurements. Microwave absorption is modeled using a lossy material to imitate the electromagnetic properties of conductive carbon-loaded foam. Perfectly matched layers Port Conductive pyramidal form Unit cell surrounded by periodic conditions Conductive coating on the bottom Figure 1: An infinite 2D array of pyramidal absorbers is modeled using periodic boundary conditions on the sides of one unit cell. Model Definition The infinite 2D array of pyramidal structures is modeled using one unit cell with Floquet-periodic boundary conditions on four sides, as shown in Figure 1. The geometry of one unit cell consists of one pyramid sitting on a block made of the same

Matlab中常见数学函数的使用

给自己看的----Matlab的内部常数(转) 2008/06/19 14:01[Ctrl C/V--学校 ] MATLAB基本知识 Matlab的内部常数 pi 圆周率 exp(1) 自然对数的底数e i 或j 虚数单位 Inf或inf 无穷大 Matlab的常用内部数学函数

我们也可在matlab中调用maple的命令进行多项式的运算,调用格式如下: maple(’maple中多项式的运算命令’) 如何用matlab进行分式运算 发现matlab只有一条处理分式问题的命令,其使用格式如下: [n,d]=numden(f)把符号表达式f化简为有理形式,其中分子和分母的系数为整数且分子分母不含公约项,返回结果n为分子,d为分母。注意:f必须为符号表达式 不过我们可以调用maple的命令,调用方法如下: maple(’denom(f)’)提取分式f的分母 maple(’numer(f)’)提取分式f的分子 maple(’normal(f)’ ) 把分式f的分子与分母约分成最简形式 maple(’expand(f)’) 把分式f的分子展开,分母不变且被看成单项。 maple(’factor(f)’) 把分式f的分母和分子因式分解,并进行约分。 如何用Matlab进行因式分解 syms 表达式中包含的变量factor(表达式) 如何用Matlab展开 syms 表达式中包含的变量expand(表达式) 如何用Matlab进行化简 syms 表达式中包含的变量simplify(表达式) 如何用Matlab合并同类项 syms 表达式中包含的变量collect(表达式,指定的变量) 如何用Matlab进行数学式的转换 调用Maple中数学式的转换命令,调用格式如下: maple(‘Maple的数学式转换命令’) 即:maple(‘convert(表达式,form)’)将表达式转换成form的表示方式 maple(‘convert(表达式,form, x)’)指定变量为x,将依赖于变量x的函数转换成form的表示方式(此指令仅对form为exp与sincos的转换式有用) 如何用Matlab进行变量替换 syms 表达式和代换式中包含的所有变量subs(表达式,要替换的变量或式子,代换式) 如何用matlab进行复数运算 a+b*i 或 a +b*j表示复数a+bi 或a+bj real(z)求复数z的实部 imag(z)求复数z的虚部 abs(z)求复数z的模 angle(z)求复数z的辐角, conj(z)求复数z的共轭复数 exp(z)复数的指数函数,表示e^z 如何在matlab中表示集合 [a, b, c,…] 表示由a, b, c,…组成的集合(注意:元素之间也可用空格隔开) unique(A) 表示集合A的最小等效集合(每个元素只出现一次) 也可调用maple的命令,格式如下: maple('{a, b, c,…}')表示由a, b, c,…组成的集合 下列命令可以生成特殊的集合: maple(‘{seq(f(i),i=n..m)}’)生成集合{f(n), f(n+1), f(n+2), … , f(m)} 如何用Matlab求集合的交集、并集、差集和补集

matlab 基础函数用法总结

1、Size 函数用法 例如:1,2,3;4,5,6]是一个2*3的矩阵,则: d = size(X); %返回矩阵的行数和列数,保存在d中 [m,n] = size(X)%返回矩阵的行数和列数,分别保存在m和n中 m = size(X,dim);%返回矩阵的行数或列数,dim=1返回行数,dim=2返回列数 2、Corrcoef 函数用法 corrcoef(x,y)表示序列x和序列y的相关系数,得到的结果是一个2*2矩阵,其中对角线上的元素分别表示x和y的自相关,非对角线上的元素分别表示x 与y的相关系数和y与x的相关系数,两个是相等的 3、sort函数用法 sort(X) 功能:返回对向量X中的元素按列升序排列的新向量。 [Y, I] = sort(A, dim, mode) 功能:对矩阵A的各列或各行重新排序,I记录Y中的元素在排序前A中位置,其中dim指明读A的列还是行进行排序。若dim=1,则按列排序;若dim=2,则按行排序。mode为排序的方式,取值'ascend'为升序,'descend'为降序 4、Legend 函数用法 legend(string1,string2,string3,┈) 分别将字符串1、字符串2、字符串3……标注到图中,每个字符串对应的图标为画图时的图标。 例如: plot(x,sin(x),?.b?,x,cos(x),?+r?) legend(…sin?,?cos?) //这样就可以把”.”标识为”sin”,把”+”标识为“cos” 5、find 函数用法 找到非零元素的索引和值 语法: 1. ind = find(X) 2. ind = find(X, k) 3. ind = find(X, k, 'first') 4. ind = find(X, k, 'last') 5. [row,col] = find(X, ...) 6. [row,col,v] = find(X, ...) 说明: 1. ind = find(X)

MATLAB中常用命令调用格式总结

第2章MATLAB数据及其运算 1.矩阵的表示:将矩阵的方括号括起来,按矩阵行的顺序输入各元素,同一行的各元素之间用空格或逗号分隔,不同行的元素用分号分隔; 2.利用M文件建立矩阵 对于比较大且复杂的矩阵,可以为它专门建立一个M文件; 3.建立大矩阵 大矩阵可由方括号中的小矩阵建立起来; 4.冒号表达式 利用冒号表达式可以产生行向量,一般格式是:e1:e2:e3;其中e1为初始值,e2为步长,e3为终止值。即冒号表达式可产生一个由e1开始到e3结束,以步长e2自增的行向量。若冒号表达式中省略e2不写,则步长为1. 注:MATLAB中还可以用linspace函数产生行向量;其调用格式为:linspace(a,b,n) 其中a和b是生成向量的第一个和最后一个元素,n是元素总数。当n省略时,自动产生100个元素;显然,linspace(a,b,n)与a:(b-a)/(n-1):b等价。当步长不方便计算或小数位数较多时用linspace函数很方便。 5.矩阵元素 MATLAB允许对一个矩阵的单个元素进行赋值和操作,矩阵A的第3行第2列元素赋值,A(3,2)=200;此时,只改变该元素的值,对其他元素无影响。如果给出的行下标或列下标大于原矩阵的行数或列数,则将自动扩展原来的矩阵,扩展后未赋值的矩阵元素将置为0. 也可以用矩阵元素的序号来引用矩阵元素,矩阵元素序号就是相应元素在内存中的排列顺序,矩阵元素按列编号,先第一列,再第二列,依次类推。 size(A)函数返回包含两个元素的向量,分别是矩阵A的行数和列数。length(A)给出行数和列数中的较大者,即length(A)=max(size(A))。 6.矩阵拆分 利用冒号表达式获得子知阵:(1)A(:,j)表示取A矩阵的第j列全部元素;A(i,:)表示A矩阵第i行的全部元素;A(i,j)表示取A矩阵的第i行、第j列的元素;(2)A(i:i+m,:)表示取A矩阵第i-i+m行的全部元素;A(:,k:k+m)表示取A矩阵第k-k+m列的全部元素;A(i:i+m,k:k+m)表示取A矩阵第i-i+m行内,并在第k-k+m列中的所有元素;(3)A(:)将矩阵A每一列元素堆叠起来,成为一个向量,相当于reshape(A,m,1); 7.利用空矩阵删除矩阵的元素 定义[]为空矩阵。给变量X赋空矩阵的语句为X=[].将某些元素从矩阵中删除,采用将其置为空矩阵的方法就是一种有效的方法。 8.矩阵的基本算术运算 矩阵的运算是在矩阵意义下进行的,单个数据的算术运算只是一种特例。 矩阵加减运算:两个矩阵的维数相同才可以进行加减运算,否则给出错误信息。一个标量也可以和其他不同维数的矩阵进行加减运算,即每个元素都加上这个标量。 矩阵乘法运算:要求矩阵A的列数与B矩阵的行数相等。矩阵与标量相乘,即矩阵中的每个元素与此标量相乘。 矩阵除法:\左除;/右除;A\B等效于A的逆左乘B矩阵,也就是inv(A)*B;而B/A等效于A矩阵的逆右乘B矩阵,也就是B*inv(A)。对于矩阵运算,一般A\B≠B/A.对于含有标量的运算,两种除法运算的结果相同,如3/4和4\3有相同的值。 矩阵的乘方:一个矩阵的乘方可以表示为A^x,要求A为方阵,x为标量。 9.点运算 .*,./,.\,.^。两矩阵进行点运算是指它们的对应元素进行相关运算,要求两矩阵维数相同。 若A,B两矩阵具有相同的维数,则A./B等价于B.\A.若两个矩阵维数一致,则A.^B表示两矩阵对应元素进行乘方运算。指数可以是标量,底也可以是标量。

MATLAB常用函数

数字信号处理与MATLAB 实现 1. n1=[ns:nf]; x1=[zeros(1,n0-ns),1,zeros (1,nf-n0)]; %单位抽样序列的产生 2. subplot(2,2,4) 画2行2列的第4个图 3. stem(n,x) %输出离散序列,(plot 连续) 4. 编写子程序可调用 4.1 单位抽样序列)(0n n -δ生成函数impseq.m [x,m]=impseq(n0,ns,nf); %序列的起点为ns ,终点为nf ,在n=n0点处生成一个单位脉冲 n=[-5:5];x1=3*impseq(2,-5,5)-impseq(-4,-5,5) x1 = 0 -1 0 0 0 0 0 3 0 0 0 n=[-5:5];x1=3*impseq(2,-4,5)-impseq(-4,-5,4) %起点到终点长度要一致 x1 = 0 -1 0 0 0 0 3 0 0 0 4.2 单位阶跃序列)(0n n u -生成函数stepseq.m [x,n]=stepseq(no,ns,nf) %序列的起点为ns ,终点为nf ,在n=n0点处生成一个单位阶跃 4.3 两个信号相加的生成函数sigadd.m [y,n]=sigadd(x1,n1,x2,n2) 4.4 两个信号相乘的生成函数sigmult.m [y,n]=sigmult(x1,n1,x2,n2) 4.5 序列移位y(n)=x(n-n0)的生成函数sigshift.m [y,n]=sigshift(x,m,n0) 4.6 序列翻褶y(n)=x(-n)的生成函数sigfold.m [y,n]=sigfold(x,n) 4.7 evenodd.m 函数可以将任一给定的序列x(n)分解为xe(n)和xo(n)两部分 [xe,xo,m]=evenodd(x,n) 4.8 序列从负值开始的卷积conv_m, conv 默认从0开始 function [y,ny]=conv_m(x,nx,h,nh) 有{x(n):nx1≤n ≤nx2},{h(n):nh1≤n ≤nh2}, 卷积结果序列为 {y(n):nx1+nh1≤n ≤nx2+nh2} 例. 设1132)(-++=z z z X ,1225342)(-+++=z z z z X ,求)()()(21z X z X z Y += 程序: x1=[1,2,3];n1=-1:1; x2=[2,4,3,5];n2=-2:1; [y,n]=conv_m(x1,n1,x2,n2)

MatLab常用函数大全

1、求组合数 C,则输入: 求k n nchoosek(n,k) 例:nchoosek(4,2) = 6. 2、求阶乘 求n!.则输入: Factorial(n). 例:factorial(5) = 120. 3、求全排列 perms(x). 例:求x = [1,2,3]; Perms(x),输出结果为: ans = 3 2 1 3 1 2 2 3 1 2 1 3 1 2 3 1 3 2 4、求指数 求a^b:Power(a,b) ; 例:求2^3 ; Ans = pow(2,3) ; 5、求行列式 求矩阵A的行列式:det(A); 例:A=[1 2;3 4] ; 则det(A) = -2 ; 6、求矩阵的转置 求矩阵A的转置矩阵:A’ 转置符号为单引号. 7、求向量的指数 求向量p=[1 2 3 4]'的三次方:p.^3 例: p=[1 2 3 4]' A=[p,p.^2,p.^3,p.^4] 结果为:

注意:在p 与符号”^”之间的”.”不可少. 8、求自然对数 求ln(x):Log(x) 例:log(2) = 0.6931 9、求矩阵的逆矩阵 求矩阵A 的逆矩阵:inv(A) 例:a= [1 2;3 4]; 则 10、多项式的乘法运算 函数conv(p1,p2)用于求多项式p1和p2的乘积。这里,p1、p2是两个多项式系数向量。 例2-2 求多项式43810x x +-和223x x -+的乘积。 命令如下: p1=[1,8,0,0,-10]; p2=[2,-1,3]; c=conv(p1,p2) 11、多项式除法 函数[q ,r]=deconv(p1,p2)用于多项式p1和p2作除法运算,其中q 返回多项式p1除以p2的商式,r 返回p1除以p2的余式。这里,q 和r 仍是多项式系数向量。 例2-3 求多项式43810x x +-除以多项式223x x -+的结果。 命令如下: p1=[1,8,0,0,-10]; p2=[2,-1,3]; [q,r]=deconv(p1,p2) 12、求一个向量的最大值 求一个向量x 的最大值的函数有两种调用格式,分别是:

COMSOL3.5快速入门案例1——导电体的热效应

COMSOL Multiphysics快速入门实例: 导电体的热效应 导电体的热效应 该模型的目的在于给出一个多物理场模型的概念并给出采用COMSOL Multiphysics求解这类问题的方法。 该实例研究了热和电流平衡之间的耦合作用现象。装置中通有直流电流。由于装置的有限电导率,在电流流过装置的过程中会出现发热现象,装置的温度将会显著上升,从而也将改变材料的导电率。这种作用过程是双向耦合的过程;即电流平衡影响到热平衡,而热平衡又反过来影响到电流平衡。 模型的过程包含以下两个基本过程: ? 绘制装置的结构图 ? 定义物理环境,设置材料属性和边界条件 ? 绘制网格 ? 选择一个合适的求解器并开始求解过程 ? 后处理结果 COMSOL Multiphysics 包含一个非常易用的CAD工具,在该模型中将会得到介绍。你可能更习惯于采用其它的CAD工具来绘制几何图形,然后将其导入到COMSOL Multiphysics中; 如果是采用这种方式,则可以跳过下面的几何结构绘制过程介绍,而通过导入一个CAD文件到COMSOL Multiphysics 中来作为分析模型,在安装目录下有为该模型准备的分析CAD几何模型文件。 简介 图 2-1显示了装置的几何结构, 该结构实际上是IC卡的支撑结构的一部分,并被焊接到一个印刷电路板上。结构由两条腿焊接到pc电路板上,上部通过一个很薄的导电薄膜连接到IC上。 两个导体部分(腿结构)是由铜制成,焊点由 60% 锑 和 40%铅组成的合金制成. 模型假定导体部分必须将1A的电流通过焊点流入到IC电路板中,计算在这个过程中温度的变化情况。

图 2-1: 装置的几何结构 模型定义 电流平衡条件由下列方程式来描述 其中 σmetal 表示电导率(S/m), V 表示电势(V). 电导率是温度相关函数,用下列表达式来描述: 其中 ρ0 表示在参考温度T 0 (K)下的参考电阻 (?·m), a 表示温度因变量的比例系数 (K -1)。 热量平衡方程包含了导电体损失的电能转化来的热能: 其中,热源由以下表达式来表达: 在这个表达式里面, k T 表示热导率(W/m·K) Q electric 表示热源(W/m 3)。 电流平衡模式下的边界条件分为三种类型: ? 在焊点处,连接点将导体部分和电路板部分连接在一起,给定电势值为: ? 装置上表面的氧化薄膜层的边界条件设置为给定电流密度,其为薄膜中的电势差的函数

COMSOL使用技巧

COMSOL Multiphysics使用技巧 (旧版通用)

一、全局约束/全局定义 对于多物理仿真,添加全局约束是COMSOL非常有用的功能之一。 例如,对于一个涉及传热的仿真,希望能够调整热源Q_0的大小,从而使得某一位置处的温度T_probe恒定在指定值T_max,我们可以直接将这个全局约束添加进来即可。

有些情况下,全局约束可能包含有对时间的微分项,也就是常说的常微分方程(ODE),COMSOL同样也支持自定义ODE作为全局约束。 例如,在一个管道内流体+物质扩散问题的仿真中,利用PID算法控制管道入口的流速u_in_ctrl,从而使得某一位置处的浓度conc 恒定在指定值c_set。(基本模块模型库> Multidisciplinary > PID control)。需要添加的PID算法约束如下式:

要添加上述约束,除变上限积分项外,另外两项都可以很容易的在边界条件中的“入口流速”设置中直接定义。因此,这个变上限积分需要转化成一个ODE ,作为全局约束加入。 令?-=t dt set c conc 0)_(int ,方程两边同对时间t 求导,得到 set c conc dt d _int -=。在COMSOL 中,变量u 对时间的导数,用ut 表示。因此变量int 的时间导数即为intt 。利用COMSOL 的“ODE 设定”,我们可以很容易的将intt-(conc-c_set)=0这个ODE 全局约束添加入模型之中。

二、积分耦合变量 COMSOL的语法中,变量u对空间的微分,分别默认为用ut,ux,uy,uz等来表示,这为仿真提供了极大的便利。那么对变量u 的空间积分呢?COMSOL提供了积分耦合变量来实现这一功能。 积分耦合变量分为四种:点(point)积分耦合变量、边(edge)积分耦合变量、边界(boundary)积分耦合变量、求解域(subdomain)积分耦合变量。根据模型的维度,会有相应积分耦合变量。用户还可以指定得到结果后的作用域,例如全局,或指定某些点、边、边界或求解域。从而可以将对积分耦合变量结果的访问限制在指定的对象上。 求解域积分耦合变量,就是对指定变量或表达式在指定的某个或者某些求解域上做积分,积分的结果赋给自定义的这个积分耦合变量。对于三维仿真,这个积分是体积分;对于二维则是面积分。最典型的应用当属对数值1进行积分,可以得到体积或面积。 边界积分耦合变量,就是对指定变量或表示在指定的某个或者某些边界上做积分,积分的结果付给自定义的这个积分耦合变量。对于三维仿真,这个积分是面积分;对于二维则是线积分。对1积分可以得到面积或边长。 边积分耦合变量,就是对指定变量或表达式在指定的某个或者某些边上做积分,积分的结果付给自定义的这个积分耦合变量。仅存在于三维仿真中,这个积分是线积分。对1积分得到边长。 点积分耦合变量,就是对指定变量或表达式在指定的某个或者某些点上给出它的值。它的最主要用法是将某个点上的结果映射到指定

常用的MATLAB程序和函数

==等于 <小于 >大于 <=小于或等于>=大于或等于~=不等于 4 常用内部数学函数 指数函数exp(x)以e为底数 对数函数log(x)自然对数,即以e为底数的对数log10(x)常用对数,即以10为底数的对数log2(x)以2为底数的x的对数 开方函数sqrt(x)表示x的算术平方根

绝对值函数abs(x)表示实数的绝对值以及复数的模 三角函数(自变量的单位为弧度)sin(x)正弦函数cos(x)余弦函数tan(x)正切函数cot(x)余切函数sec(x)正割函数csc(x)余割函数 反三角函数asin(x)反正弦函数acos(x)反余弦函数atan(x)反正切函数acot(x)反余切函数asec(x)反正割函数acsc(x)反余割函数 双曲函数sinh(x)双曲正弦函数cosh(x)双曲余弦函数tanh(x)双曲正切函数coth(x)双曲余切函数sech(x)双曲正割函数csch(x)双曲余割函数 反双曲函数asinh(x)反双曲正弦函数acosh(x)反双曲余弦函数atanh(x)反双曲正切函数acoth(x)反双曲余切函数asech(x)反双曲正割函数acsch(x)反双曲余割函数 求角度函数atan2(y,x)以坐标原点为顶点,x轴正半轴为始边,从原点到点(x,y)的射线为终边的角,其单位为弧度,范围为( , ] 数论函数gcd(a,b)两个整数的最大公约数lcm(a,b)两个整数的最小公倍数

排列组合函数factorial(n)阶乘函数,表示n的阶乘 复数函数real(z)实部函数 imag(z)虚部函数 abs(z)求复数z的模 angle(z) 求复数z的辐角,其范围是( , ] conj(z)求复数z的共轭复数 求整函数与截尾函数ceil(x)表示大于或等于实数x的最小整数floor(x)表示小于或等于实数x的最大整数round(x)最接近x的整数 最大、最小函数max([a,b,c,...]) 求最大数min([a,b, c,..]) 求最小数 符号函数 sign(x)

相关主题
文本预览
相关文档 最新文档