
马特拉博Matlab
文章平均质量分 94
Matlab实战内容,每篇针对实际使用Matlab中的问题和概念,力求做到言之有物。老夫聚二十余年马特拉波之功力,能不能突破就看少年你的资质了!https://www.windtunnel.cn/categories/matlab
大福是小强
不再更,请访问:https://www.windtunnel.cn/
展开
-
044_Standalone App in Matlab中发布独立应用
跟别说,我们MATLAB仙人还提供了默认参数的选项,顿时把这个冒烟测试的例子提升到它不应该有的高度。这个应用的功能超级牛叉,应用可以接受0个或者1个字符串参数,输出你好世界,来自xxx。下面给出一个简单的命令行应用打包的例子,为了展示过程,我们先整一个最简单的TUI应用,然后打包成独立App。文件里面包含了一些关于这个应用的信息,比如如何安装MATLAB Runtime,如何运行这个应用等等。来安装这个应用,但是这个过程太繁琐了,我们可以把这个应用打包成一个安装包,然后一键安装。只要给够钱,牛马们都能干。原创 2025-01-04 17:19:51 · 1075 阅读 · 0 评论 -
043_Tcpip Instruments in Matlab中连接和调试采用TCP/IP协议的仪器
设置多路路由,可以同时访问不同网段的仪器。Tcpclient对象是用来连接和调试采用TCP/IP协议的仪器的。回声服务器可以用于测试我们实现的客户端功能。我们也可以构造tcpserver对象,用于接收客户端的请求,留到下回。原创 2024-12-15 09:58:51 · 1484 阅读 · 1 评论 -
042_Unscented Kalman Filter in Matlab无迹卡尔曼滤波
无迹卡尔曼滤波(Unscented Kalman Filter, UKF)是一种基于卡尔曼滤波的非线性状态估计方法,它通过一种称为无迹变换(Unscented Transformation)的方法,将非线性系统的状态估计问题转化为线性系统的状态估计问题,然后使用卡尔曼滤波器进行状态估计。这是一种在线方法,也就是说,它会连续地对系统状态进行估计,而不是像批处理方法那样,一次性处理所有的数据。假设我们对 van der Pol Oscillator 的状态进行观测,但是观测值是带有噪声的。系统的框图如上所示。原创 2024-12-15 09:55:11 · 960 阅读 · 0 评论 -
041_Compare_Matrix_Squre_Sum_in_MATLAB中矩阵平方和的比较
矩阵平方和的定义是对矩阵中的每一个元素进行平方,然后求和。对于一个矩阵AAAsum∑i1m∑j1nAij2sumi1∑mj1∑nAij2这个平方和计算,在某些机器学习的算法中、或者特殊的优化问题中都会涉及到。进行算法开发,一定要按照基线算法、算法优化的思路来考虑。对算法的效率进行比较,最好选择不同的规模来分析问题。加速比是一个很好的指标,能够直观的看出算法的性能提升。原创 2024-12-06 00:14:00 · 1006 阅读 · 0 评论 -
040_Wave_PDE_In_Matlab求解时变波动方程
当一个偏微分方程,可以写成上述散度形式(Divergence Form),即可以采用有限元方法很方便的求解,这里有一个条件就是方程的系数矩阵必须不包含函数的偏微分(可以包括函数、坐标、时间等变量)。接着,就给出被积函数的整体形式作为函数的第一个参数,并把因变量,只有一个可以省略。代码中唯一个好玩一点点的就是最后的gif生成,当目录下已经有文件的时候,就增加一个编号,这样保证gif文件是新的,当。的形式调用时,就会把图形增加到后面,如果是一个已有的gif,就会发生不希望的情况。原创 2024-12-06 00:07:48 · 1004 阅读 · 0 评论 -
039_SettingsGroup_in_Matlab图形界面的设置选项
首先,我们可以看看Matlab的语言选择,这个选项在Matlab-General下面的最后一个面板,Desktop Language,可以选择Chinese和Engish。在上面的1、2、3、4、5这几个区域的右上角,都有一个小小的三角形,点击这个三角形,可以展开一个菜单,里面有一些设置选项。如果关掉这个80列的选项,就会利用命令行窗口的所有列来显示,如果还是不够显示,就是进行上面这样的标记列范围的换行显示。中,也可以打开一个设置窗口,里面有很多设置选项,可以设置Matlab的界面和GUI的各种行为。原创 2024-11-23 09:48:40 · 1488 阅读 · 0 评论 -
038_High_Level_Skip_in_Matlab中的高端跳过循环
两种循环方式,for和whilebreakreturncontinue控制循环提前结束和跳过for循环中使用break更加自然while循环中使用break的条件可以合并到while表达式中设计UI的过程中,一定要考虑清楚每个元素的职责,不要让一个元素负责多个职责。原创 2024-11-23 09:44:34 · 888 阅读 · 0 评论 -
037_Local_Meshing_Control_in_MATLAB中控制局部网格划分
工具箱提供了有限的节点增加方法,通过增加节点来控制局部网格划分。最好还是在分析之初,或者在迭代过程中回到几何创建的过程中,来额外产生边和面,从而控制局部网格划分。原创 2024-11-18 16:08:19 · 1127 阅读 · 0 评论 -
036_Geometry_Function_In_Matlab中定义偏微分方程求解2D几何区域的函数方法
这个几何形状是PDE求解的区域。也就是说偏微分方程这个区域中取值(初始值和状态值、系数),在区域的边界上设定边界条件。m∂2u∂t2d∂u∂t−∇⋅c∇uaufm∂t2∂2ud∂t∂u−∇⋅c∇uauf或者,方程组m∂2u∂t2d∂u∂t−∇⋅c⊗∇uaufm∂t2∂2ud∂t∂u−∇⋅c⊗∇uauf。原创 2024-11-14 14:52:15 · 1033 阅读 · 0 评论 -
035_Progress_Dialog_in_Matlab中的进度条对话框
这个可以取消的进度条,在实际使用中应该足够保守,仅仅用于那些长时间计算、并且在计算中不允许用户进行其它交互的场合。不然,过于激进地使用模式对话框还是很容易影响用户体验的。原创 2024-11-14 08:59:00 · 913 阅读 · 0 评论 -
034_Structural_Transient_In_Matlab结构动力学问题求解
函数进行可视化,这个函数可以把求解的结果映射到网络结构上,对点、线、面进行着色。当时求解这个问题,在最外面的竖直切面加载了一个静态的固定的力。注意,我们这里设置边界条件的函数,由小写字母开头,而设置好的边界条件的变量,首字母是大写的。这里,因为是一个动态问题,我们实际更想要更好地理解在动态载荷下,结构是如何发生变形和位移的。,这个函数提供了更多的可视化功能,可以对结构的变形、位移、应力、应变等进行可视化。加载的设置方法,类似于边界条件的设置。当这里使用一个函数是, 对函数的输入和输出有固定的要求。原创 2024-11-02 15:34:12 · 1238 阅读 · 0 评论 -
033_Structure_Static_In_Matlab求解结构静力学问题两套方法
求解静力学问题,求解过程和结果都没有什么让人惊喜的地方。下面,在讨论一个周期加载的问题,这个问题是一个动力学问题。我们就直接用统一建模框架来做。原创 2024-11-02 12:45:46 · 1099 阅读 · 0 评论 -
032_Tiledlayout_in_Matlab中的分块图布局
这个方式比之前的subplot函数更加灵活,可以更加方便的绘制多个子图。但是,这个功能在R2019b之后才有,所以需要注意版本的问题。原创 2024-10-29 11:11:39 · 1778 阅读 · 0 评论 -
031_Arguments_in_Matlab中的函数参数
arguments块中,可以定义输入参数、输出参数、重复输入参数、重复输出参数。可以使用内置的验证函数,也可以自定义验证函数。可以使用结构体的方式来定义命名参数。可以用于抛出错误,error也可以用于抛出错误。原创 2024-10-29 09:31:20 · 1048 阅读 · 0 评论 -
030_Subplot_In_Matlab中多图绘制之subplot函数
当然,从下面的例子可以看到,当有两个子图发生重叠时,就把先绘制的那个子图删除替换成新的子图。这里,先把第一行的两个子图绘制完成后,再绘制第二列的一个子图,这样就把第一行的第二个子图删除了。这里有同样的问题,把上面脚本中子图坐标系的位置稍微调整一下就会发现,当有两个图重叠时,后绘制的图会把先绘制的图覆盖掉。这里比较烦人的就是要手动调整标注(箭头、方框)的位置,而且这个坐标是针对整个图的,不是针对子图的,也就是左小角坐标是。简单的说,子图的编号采取了行先的方式,下面给出一个循环的例子,可以看到,图号按照。原创 2024-10-28 17:55:17 · 2662 阅读 · 1 评论 -
029_Common_Plots_Matlab常见二维绘图
来查看详细的帮助,帮助中通常还有海量的例子来学习如何调用,并且在高版本的Matlab里面,还能打开相应的LiveScript,修改参数查看绘图结果。实际上,我们调用上述绘图函数的时候,可以把第一个参数设置为一个坐标系对象,如果省略这个参数,Matlab会自动调用。用新的工具,可以更加方便的控制坐标系的位置和大小,以及坐标系之间的间距。的参数,可以设置子图的大小,这个参数是一个二维数组,第一个元素是行数,第二个元素是列数。可以通过对句柄的操作,来修改图形的属性,例如颜色,线型,线宽等等。原创 2024-10-28 17:51:39 · 1009 阅读 · 0 评论 -
028_Comma_Separated_List_in_Matlab中的逗号分割列表
这玩意一般都不知道是什么,Comma-separated list,CSL, 虽然,用Matlab的时候天天会用到。这到底是个什么玩意?或者,更进一步,这到底是不是个玩意?每次调用一个参数大于一个的函数时,我们就是用了一个CSL,a.k.a.,逗号分割列表。ans =0 00 0每次我们显式定义一个数组/矩阵/元胞数组时,我们就写了一个或者多个逗号分割列表。ans =1 2 3 34 5 6 7>> {1,2,3}ans =1×3 cell 数组。原创 2024-10-26 17:38:40 · 1279 阅读 · 0 评论 -
027_UIImage_in_Matlab图形界面开发中的图片
图形在Matlab中是一个矩阵UIImage是Matlab图形界面开发中常用的控件通过imread和imwrite可以读取和保存图形图像也可以存储为mat文件,乃至文本文件,前者通过save和load可以保存和加载图形,后者通过和readmatrix可以保存和加载。原创 2024-10-26 10:15:32 · 651 阅读 · 0 评论 -
026_Callbacks_in_MATLAB中APP界面回调函数编程实现
回调函数是Matlab GUI和App设计中的一个核心的内容,通过用户注册回调函数,在界面操作时App代码会自动调用相应代码,实现各种功能。回调函数的注册方式有两种:函数句柄和匿名函数。回调函数具体实现方式有三种:全局函数、局部函数和嵌套函数。原创 2024-10-21 21:09:10 · 1955 阅读 · 0 评论 -
025_Position_Layout_in_Matlab界面布局之设定位置
Position属性对于图形对象来说是一个通用的属性,包括左下角坐标、宽度和高度通过设置Position属性,可以实现uifigure界面的布局通过uistack函数,可以设置组件的Z维度,来实现组件的层次可以直接捕获整个uifigure对象,然后在回调函数中访问uifigure对象的UserData属性,来实现功能。这在有些情况下能够获得一些收益。原创 2024-10-21 00:10:23 · 1124 阅读 · 0 评论 -
024_Symbolic_Math_in_Matlab符号数学工具箱的使用思路
一定要分离符号计算和数值计算,以免符号计算的低效影响数值计算的效率。fplot函数可以直接绘制符号表达式的图像。符号函数是符号表达式的一种,可以直接调用,定义的方式为。符号表达式可以通过函数转化为函数句柄或者函数文件,这样就可以在数值计算中使用。原创 2024-10-19 23:52:13 · 1425 阅读 · 0 评论 -
023_Layout_and_Containers_in_Matlab界面布局与容器
uifigure是根容器,其他容器都是它的子容器,通过设置句柄不可见,可以防止gcfgcaclose等函数对App的影响。是唯一的布局容器,通过设置行高、列宽、内边距、间距,可以很容易实现VBox和HBox。uipanel是一个面板容器,可以包含其他控件,可以设置标题、背景颜色等。uitabgroup和uitab是标签页容器,可以包含多个uitab,每个uitab可以包含其他控件。原创 2024-10-19 14:45:00 · 1577 阅读 · 0 评论 -
022_matrix_dancing_in_Matlab中求解一个超简单的矩阵问题
矩阵定义的两个基本元素是:类型和大小。通过zerosoneseyerand等函数可以定义不同性质的矩阵。矩阵的构造、操作和访问是Matlab的基本操作,也是每次计算的核心流程。通过zerosoneseyerand等函数可以定义不同性质的矩阵。通过等运算符可以对矩阵进行操作。也可以通过.*./.^等运算符对矩阵进行逐元素操作。通过end两个符号来访问矩阵的部分元素就;逻辑索引也非常强大,对部分满足条件的元素进行赋值。通过arguments关键字可以指定输入参数的类型,通过。原创 2024-10-18 10:42:10 · 889 阅读 · 0 评论 -
021_Thermal_Transient_in_Matlab统一偏微分框架之热传导问题
利用统一框架,求解动态热传导方程的过程与求解静力学方程类似,同样是建立模型、设定参数、求解、可视化结果。不是特别一样的在于,热传导方程的相似参数就只有一个,通过相似性分析,可以简化设定参数的过程,最后结果反应出来的只是时间尺度上的差异。通常而言,α是一个很小的量,因此传热的过程相对来说是比较慢的,通过无量纲化,计算步长比实际时间要小很多。原创 2024-10-18 10:38:54 · 864 阅读 · 0 评论 -
020_FEM_Meshing_in_Matlab工具箱PDE之网格划分
PDE工具箱提供的网格生成函数最大的优点是非常透明,网格数据结构非常清晰,可以通过model.Mesh来查看网格的各种属性。通过全局控制参数,可以对整个网格进行调整,通过局部控制参数,可以对网格的局部进行调整。通过函数,可以查看网格的质量,找到质量不好的元素,然后通过局部控制参数进行调整。PDE的网格工具功能相对单一,但是对于一般的几何体和相对偏理论的问题,已经足够使用。原创 2024-10-16 15:56:24 · 1624 阅读 · 2 评论 -
019_Baseline_optimization_in_Matlab中考虑优化的基线方法
优化是一个很高大上的词语,但是在实际工作中,优化通常是一个很无趣而平凡的事情。优化算法的基线通常会选择网格搜索和随机搜索。水论文总是要搞点优化,千万别太在意,也别太伤感情,每件事情都有代价,优化一样。原创 2024-10-14 09:55:36 · 1094 阅读 · 0 评论 -
018_FEA_Structure_Static_in_Matlab三维结构静力学分析
总的来说,这个新的Matlab的PDE工具箱的写法更加面向对象,更加符合现代的编程风格,但是对于老的写法,还是兼容的。求解静力学问题的过程比较清晰,对于处理非常简单相对偏理论的问题,是很容易拿到结果的,并且,各个数据结构相对透明,比如Mesh,节点、单元等信息都可以直接访问。如果要变更边界条件、载荷,来研究灵敏度,也是非常方便的,只需要修改model结构体的属性,然后重新求解就可以了。相应的,如果要做一些优化,也是非常方便的。原创 2024-10-12 17:28:29 · 1071 阅读 · 0 评论 -
017_FEA_CSG_in_Matlab新的统一有限元分析工作流之2D几何
跟几何相关的函数总结如列几个表格。CSG几何体是一种简单直观的几何体构造方法,通过布尔运算来构造复杂的几何体。decsg函数可以把CSG几何体分解为最少区域。csgdel函数可以删除内部边界条件,形成更为简单的区域条件。原创 2024-09-21 10:44:24 · 1335 阅读 · 0 评论 -
016_Save_the_picture_in_Matlab中保存图片
savefig保存图形窗体,可以继续编辑print打印图形,也可以保存图形到文件导出图形,不包括图形窗体中的UI组件getframe和imwrite可以保存帧为图像文件exportapp导出App Designer应用程序的内容。原创 2024-08-31 09:13:42 · 1325 阅读 · 0 评论 -
015_GUI_in_Matlab中实现GUI开发
具体所需要的函数除了上面的,主要是各种对象的属性,这个具体查询文档即可。Matlab的GUI设计有两种方式,一种是App Designer,一种是编程设计。uifigure创建窗口及配套控件和布局,构造的应用与App Designer类似。编写GUI的函数,可以通过调用规范来规范输入参数,确保输入参数正确。回调函数,因为有匿名函数调用的方式,可以很方便地在运行时绑定所需值,正确实现功能。原创 2024-08-30 15:16:12 · 1741 阅读 · 0 评论 -
014_files_in_MATLAB中的文件读写
Matlab中实现了一个接近底层的文件操作原语,主要是fopenfclosefreadfwritefseekftellfeofferror等函数。这个文件操作原语也具备Matlab直接操作数组的特性,因此可以实现非常灵活又高效的二进制文件读写。针对文本文件,Matlab提供了fscanffgetlfgetstextreadtextscan等函数,可以实现文本文件的读写。针对流行的文件格式,Matlab提供了loadsaveopenfigsavefigxlsreadxlswritecsvread。原创 2024-04-13 11:38:08 · 1477 阅读 · 0 评论 -
013_NaN_in_Matlab中的非数与调试方法
Matlab编程(计算器使用)中经常有个错误给你,这句话里可能包含一个关键词NaN。大部分学生都有过被NaN支配的痛苦记忆。NaN是 Not a Number 的缩写,表示不是一个数字。在 Matlab 中,NaN是一个特殊的数值,表示一个无效的或未定义的数值。NaN通常是由于计算错误或者无效的操作导致的。我们可以通过以下方式创建一个NaNa = NaN;这个NaN和Matlab中其他常量,如true和false一样,居然是个函数,当我们直接不带括号的引用它时,按照前面的函数调用规则,它相当于就是。原创 2024-04-12 09:39:47 · 1113 阅读 · 0 评论 -
012_control_flow_in_Matlab中的控制流
虽然,我们说Matlab中的计算是向量化的,但是在某些情况下,作为一个“程序设计语言”,Matlab也提供了一些控制流结构,来帮助我们实现一些复杂的逻辑。我会在介绍控制流的时候,提醒如何用向量化的方式来实现相同的功能。原创 2024-03-31 09:32:25 · 488 阅读 · 0 评论 -
011_string_and_cell_in_Matlab中的字符串与元胞数组
这两个东西拉在一起讲,是因为在2016a之前的Matlab中,要表示一个字符串的数组,只能用元胞数组。最初的字符串在Matlab中的类型是字符,在Matlab中,一个字符就是一个长度为1的字符串,而一个字符串就是一个长度大于1的字符数组。这就造成,要表示一个字符串数组,就只能用元胞数组。因为Matrix只能是方阵……所以当时我们要在一个图上画几条线,每条线的名字是一个字符串,就只能用元胞数组。原创 2024-03-31 08:42:00 · 994 阅读 · 0 评论 -
010_documentation_in_Matlab中的帮助与文档
一眨眼已经写了十篇文章。写第一篇和第二篇的时候就是随手而为,写完这两篇我就想干脆写个300篇算。在007(第8篇)里,我已经觉得可能需要梳理一下到底要写什么,主要的想法就是,怎么才能凑300篇呢?现在已经放飞自我,感觉300篇也不是什么难事。如果一个刚上大学,没有接触计算机的同学把这几篇看完,应该已经能够用Matlab进行一些简单的计算,甚至能够编一个小程序来解决一些真正的问题。但是所有这些帖子,归根结底还是授人以鱼,要真正授人以渔,还是应该好好学习Matlab的帮助与文档。原创 2024-03-29 11:58:40 · 1395 阅读 · 0 评论 -
009_lhs_rhs_in_Matlab中的左值和右值约定
我们在把Matlab作为计算器来使用时,有些时候会直接列出一个表达式,等着Matlab打印出计算结果。就这个简单的举动,在计算机科学中,也有一个高大上的名字,叫什么REPL(Read-Eval-Print Loop)。你们以后如果在拿Matlab作为计算器使用,别人问你们在干什么,你们就可以说,我在利用Matlab的REPL功能进行快速原型开发与验证。我在好多本书里看到对REPL的意义的解释,基本上都是这样的:REPL是一种交互式编程环境,它可以让你快速地输入表达式,然后立即看到计算结果。原创 2024-03-29 08:53:07 · 1472 阅读 · 0 评论 -
008_function_convention_in_Matlab中的函数约定
前面讲的所有内容,都可以在Matlab的命令行中间完成,但是我们的某一段计算,可能会希望能够多次运行,这个时候Matlab提供的基于文件约定的脚本和函数基本单元就派上了用场。当然,脚本和函数区分的约定就在于文件头。一个文件的第一个有效行是一个function定义,那么这个文件就是一个函数,否则就是一个脚本。在Matlab命令行中输入,就可以编辑一个文件,如果这个文件在搜索目标中不存在,那么Matlab会提示创建一个新文件。原创 2024-03-28 14:41:43 · 757 阅读 · 0 评论 -
007_how_to_start_learning_Matlab学习的启动与加速
这个专题的Matlab博文系列,来到了传奇的007,我又准备放下技术工作的写作,来一点务虚和规划的内容。这个系列的开始,也是一个随机发生的小概率事件,本来Python(PyQt)、JavaFX(Kotlin)和F#三个系列的写到F#的时候已经有点觉得失去了激情,可能还需要一个契机才有可能回到F#的写作,因为那个用F#做的项目已经大概告一段落,本来向着好好写写Domain Driven F#什么的。原创 2024-03-27 16:33:13 · 886 阅读 · 1 评论 -
006_logical_index_in_Matlab中的逻辑数组索引
Matlab的逻辑值是一种特殊的数值类型,只有两个值:1和0,分别代表true和false,它的大小就只有1Bytes。逻辑数组索引是一种非常灵活的索引方式,它的基本概念是用一个逻辑数组来选择数组中的元素。逻辑数组索引的产生方式有:逻辑操作符,逻辑计算符号,逻辑函数,判断型的函数,自己定义返回逻辑值的函数。工程应用约定:逻辑数组索引由被索引的数组计算得到,逻辑数组的大小和被索引的数组的大小相同。最好一直采用这种方式来对数组进行索引。原创 2024-03-27 13:45:51 · 1452 阅读 · 0 评论 -
005_index_in_Matlab中的数组索引
前面我们已经介绍了关于向量、数组的一些基本约定,已经涉及了一些数组创建和操作的规则。特别还有操作符,用于生成等差数列,如,产生行向量。还有一些没有介绍的创建函数,也很常用。还有几个函数,是提取部分元素或者组合元素形成新的数组。这里不对这些命令进行详细介绍,需要查看帮助的,请在Matlab命令行中输入命令,如,等。要查看详细文档,可以在Matlab命令行中输入命令,如,等。这里对数组元素的访问,也称为数组索引,进行一个专门的介绍。很多程序员和初学者在使用Matlab时,会有一个疑问:为什么要用括号来索引数组元原创 2024-03-27 00:13:54 · 2449 阅读 · 0 评论