007_how_to_start_learning_Matlab学习的启动与加速

news2024/11/17 12:21:54

Matlab学习的启动与加速

1. 前言

这个专题的Matlab博文系列,来到了传奇的007,我又准备放下技术工作的写作,来一点务虚和规划的内容。

这个系列的开始,也是一个随机发生的小概率事件,本来Python(PyQt)、JavaFX(Kotlin)和F#三个系列的写到F#的时候已经有点觉得失去了激情,可能还需要一个契机才有可能回到F#的写作,因为那个用F#做的项目已经大概告一段落,本来向着好好写写Domain Driven F#什么的。

接着因为硕士组里有个孩子缺篇EI,其实那孩子的中文期刊文章写得挺好,工作进展也不错,但是学校又那种奇怪的要求,于是就赶工弄一个EI会议的文章。既然是赶工,那就用Matlab吧。

Matlab是一个很很好的工具,M语言不是很好的语言。当年我硕士的时候,还用Matlab编过软件(包含GUI),反正体验不太美妙。

脚本语言的通病,写着写着就不知道变量和参数是什么,注释一堆加上改来改去,有时候注释没更新还不如没注释。当然既然是Matlab,那个规模就不会太大,好好调试怎么也能凑活着出图交账。

我自己没有正经学过Matlab,断断续续用过不少,也帮别人打过好多下手,就是给人家的Simulink模型调试数据、修改别人的Matlab脚本,或这自己要简单出个图(chart)之类的。

这次编一个小模型,弄点Monte Carlo模拟,突然激情上来,有点想把多年Matlab使用的经历和认识到的一些问题和技巧写下来,也算是给自己一个总结,也许对别人也有点帮助。

2. Matlab的学习

Matlab的学习,从计算器开始。

Matlab和所谓的M脚本语言,本质上就不是什么通用编程语言,最初的设计应该是作为一个需要开展数值计算的工程设计人员、科学家用的工具,用时髦的话来说,就是一个Domain Specific Language(DSL)领域特定语言。

但是随着Matlab的功能越来越强大,用户群体也越来越广泛,Matlab也在不断地向通用编程语言靠拢,比如加入了面向对象编程(OOP)的特性,比如加入了对.NET、Python等语言的支持。

在这些发展和进步的过程中,非常庆幸MathWorks公司一直没有忘记初心,这就是一个Matrix Laboratory,一个矩阵计算的实验室,一个大型计算器。

所以,对Matlab的学习,应该首先把它当一个卡西欧函数计算器来看待。有任何数字的问题,打开Matlab,在>>提示符下输入,回车,得到结果。

这就是学习Matlab和别的编程语言不完全一样的地方,不需要什么基础,不需要什么环境配置,不需要学会编程和调试,找一台有Matlab的电脑,双击点开,找到>>,就可以开始学习。

因为错误的代价非常的低,学习的起点也非常低。这就是Matlab的学习的第一步。

我家孩子还在二年级,已经学会在Windows、Linux的电脑上打开Matlab,输入1+1,回车,得到结果2。当然我们也可以输入sin(2 * pi / 3),回车,得到结果0.8660

>> sin(2 * pi / 3)

ans =

    0.8660

就这样挺好的。如果出错,Matlab就只会用红色的字体显示错误信息,不会弹出对话框,不会让你重新编译,不会让你重新启动,不会让你重新配置,不会让你重新安装。

>> sin(2 * pi / 3
sin(2 * pi / 3
            ↑
无效表达式。调用函数或对变量进行索引时,请使用圆括号。否则,请检查不匹配的分隔符。

是不是想输入:
>> sin(2 * pi / 3)

是不是很好?这就是Matlab的学习的第一步。

3. 从数字到矩阵

当然,一个成熟的工程师或者一个即将成为科学家的后备天才,他们不会满足于标量,他们会使用向量表达更高维度的数据,会用高阶张量来表达协变和逆变的关系,会描述高阶空间的转换和变换。

这就是Matlab的第二步,从数字到张量。

Matlab的张量,就是矩阵。矩阵是一个二维的张量,是一个行列的表格,是一个数字的数组。在Matlab里,矩阵是一个变量,是一个对象,是一个数据类型。

>> A = [1, 2; 3, 4]

A =

     1     2
     3     4

这个时候,线性代数的知识就派上用场了,我们可以用矩阵乘法、矩阵转置、矩阵求逆、矩阵行列式等等一系列的操作。

>> B = [1, 2; 3, 4]

B =

     1     2
     3     4

>> A * B

ans =

     7    10
    15    22

>> A'

ans =

     1     3
     2     4

>> inv(A)

ans =

    -2.0000    1.0000
     1.5000   -0.5000

>> det(A)

ans =

    -2.0000

4. 从计算到绘图

Matlab的第三步,就是从计算到绘图。当开始计算向量、矩阵的时候,我们就会发现一个新的需求,就是把计算的结果可视化。标量的计算,我们可以直接看到结果,但是向量、矩阵的计算,我们就需要把结果绘制成图表才能更直观的理解。

Matlab的绘图功能非常强大,可以绘制各种类型的图表,包括线图、柱状图、饼图、散点图、等高线图、三维图等等。

>> x = 0:0.1:2*pi;
>> y = sin(x);
>> plot(x, y);

Matalb的绘图函数还包括了很多的参数,可以设置线型、颜色、标记、标题、坐标轴等等。

>> plot(x, y, 'r--o');
>> title('sin(x)');
>> xlabel('x');
>> ylabel('y');

在这里插入图片描述

只需要学会使用一个命令help plot或者doc plot,就可以查看更多更多参数、示例和其它相关的函数。

5. 从启动到加速

前面标量计算、矩阵计算、绘图,已经可以解决很多问题,可以看到这个过程中,完全不需要过多的编程知识,连什么文件、脚本、函数这些基本概念都不需要知道,就是算个数,画个图。

但是接下来的路径就会稍微有一点点颠簸。

flowchart TD
    A[启动Matlab软件,输入命令,计算/绘图] --> B[使用edit命令/菜单按钮新建文件,编辑脚本]
    B --> C[保存/运行脚本,搜索路径]
    C --> D[矩阵和矩阵索引的概念和相关约定]
    D --> E[元组/函数的定义和约定]
    E --> F[更复杂的图表定制能力]
    E --> G[数据输入、输出和文件操作]
    E --> H[学科和任务对应的专门计算:统计、微分方程、优化、信号处理等]

在这里插入图片描述

基本上,作为一个工程师/研究人员,掌握这些就足够应付一般的科研工作。

6. 这个系列的规划

最后回到这个系列文章。一开始,我都是用到哪里写到哪里,当我写了6篇之后,我有点上头,决定要写300篇。我猜最后可能写不到300篇,但是我会把上面的路径遍历一下,把我认为重要的知识点和技巧写下来。

最后有几个认知:

  1. Matlab是一个计算工具,其内嵌的脚本应该被当做一个DSL;
  2. DSL的共同特点是约定特别多,所以学习DSL的第一步是识别约定和遵守约定;
  3. 约定会节省大量的思考,也会形成简洁有效的表达,但是约定也会带来很多的困惑和错误;
  4. 遇事不决先打几个命令试一下,工程师浑身油污不是没有原因的;
  5. help命令、doc命令、edit命令、lookfor命令是Matlab的好朋友;
    ,所以学习DSL的第一步是识别约定和遵守约定;
  6. 约定会节省大量的思考,也会形成简洁有效的表达,但是约定也会带来很多的困惑和错误;
  7. 遇事不决先打几个命令试一下,工程师浑身油污不是没有原因的;
  8. help命令、doc命令、edit命令、lookfor命令是Matlab的好朋友;
  9. 约定,在强调一下约定,一切以计算器输出为准,搞什么语言警察对于工程师来说没有意义,试下,能用就行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1548470.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【MySQL】多版本并发控制

一、什么是MVCC MVCC是通过数据行的多个版本管理来实现数据库的并发控制。MVCC也就相当于是如何实现在相应的隔离级别下,更好的实现并发。 二、快照读与当前写 MVCC在InnoDB中的实现主要是为了提高数据库并发性能,用更好的方式去处理读-写冲突。 2.1、…

软件应用实例,租赁系统软件操作教程,脚手架租赁管理集装箱租赁管理系统教程

软件应用实例,租赁系统软件操作教程,脚手架租赁管理集装箱租赁管理系统教程 一、前言 以下软件操作教程以,佳易王租赁管理系统软件V17.0为例说明 件文件下载可以点击最下方官网卡片——软件下载——试用版软件下载 1、软件可以记录&#x…

MySQL索引优化实战宝典

MySQL索引是MySQL数据库用于快速查找和访问数据的一种数据结构,它就像书的目录一样,可以帮助数据库系统更快地定位到所需数据的位置,从而大大提高查询性能。 下面来看一下索引分类 一、索引分类 本文介绍平时使用最多的基于 InnnoDB…

盘点4款最适合教学的电路仿真软件

在现代电子教育中,电路仿真软件扮演着至关重要的角色。它们不仅能够帮助学生更好地理解电子电路原理,还能够提升教学效率,培养学生的实践能力。本文将盘点4款最适合教学的电路仿真软件,助您选择最佳的教学利器,同时介绍…

HTTP的三次握手和四次挥手? 我都给你讲清楚 !!!

今天我们来聊聊一个计算机网络中非常基础但又非常重要的概念——HTTP的三次握手和四次挥手。 一、三次握手 首先,我们来聊聊三次握手。三次握手其实是TCP(传输控制协议)建立连接时的一个过程,而HTTP是基于TCP的,所以我…

centos 环境部署

一、安装redis 1. 升级 GCC 最直接的解决方式是升级你的 GCC 编译器到支持 C11 标准的版本。CentOS 7 默认的 GCC 版本较旧,可能不支持 _Atomic。你可以通过以下步骤升级 GCC: 启用 CentOS 的 Software Collections (SCL) 仓库,该仓库提供了…

学习使用xbox手柄控制小乌龟节点移动

使用xbox手柄控制小乌龟,首先要下载joy功能包,发布sensor_msgs话题也就是手柄和ros通信的话题。 下载的步骤就根据官方文档即可 joy/Tutorials/ConfiguringALinuxJoystick - ROS Wiki 这里我提供一下具体步骤 第一步 安装joy 首先安装对应系统版本的…

Oracle VM(虚拟机)性能监控工具

Oracle VM是一个独立的虚拟化环境,由 Oracle 提供支持和设计,旨在为运行虚拟机提供轻量级、安全的基于服务器的平台。Oracle VM 能够在受支持的虚拟化环境中部署操作系统和应用软件,Oracle VM 将用户和管理员与底层虚拟化技术隔离开来&#x…

Java Web-Tomcat

Web服务器 Web服务器是一个软件程序,对HTTP协议的操作进行封装,使得程序员不必直接对协议进行操作,让Web开发更加便捷。主要功能是“提供网上信息浏览服务”。 Tomcat,是一个 HTTP 服务器。我们只需要在服务器中安装一个Web服务器如Tomcat,然后就可以将…

vue项目使用eletron将打包成桌面应用(.exe)

vue项目使用eletron将打包成桌面应用(.exe) 1.前期准备 两个项目: 1、自己用vue cli创建的项目 2、第二个是去gitee将案例clone下来 案例地址 https://gitee.com/qingplus/electron-quick-start.git 2、测试案例是否可以正常运行 # 进入项目 cd electron-quick-…

考研数学|《1800》《1000》《880》《660》最佳搭配使用方法

直接说结论:基础不好先做1800、强化之前660,强化可选880/1000题。 首先,传统习题册存在的一个问题是题量较大,但难度波动较大。《汤家凤1800》和《张宇1000》题量庞大,但有些题目难度不够平衡,有些过于简单…

TinyEMU源码分析之启动流程

TinyEMU源码分析之启动流程 1 始于0x10002 确定BBL入口点3 mentry.S执行过程4 启动流程小结 本文属于《 TinyEMU模拟器基础系列教程》之一,欢迎查看其它文章。 本文中使用的代码,均为伪代码,删除了部分源码。 1 始于0x1000 我们沿着TinyEMU…

夜晚水闸3D可视化:科技魔法点亮水利新纪元

在宁静的夜晚,当城市的霓虹灯逐渐暗淡,你是否曾想过,那些默默守护着城市安全的水闸,在科技的魔力下,正焕发出别样的光彩?今天,就让我们一起走进夜晚水闸3D模型,感受科技为水利带来的…

AI足球教练上岗利物浦,射门机会提高13%!来自DeepMind,网友:这不公平

梦晨 发自 凹非寺 量子位 | 公众号 QbitAI AI足球教练登上Nature子刊,谷歌DeepMind与利物浦队合作三年打造: 如同AlphaGo颠覆围棋一样,改变了球队制定战术的方式。 像是进攻方把球传给谁更容易创造射门机会,防守方如何调整布阵……

【双指针】Leetcode 四数之和

题目解析 18. 四数之和 这道题的思路和三数之和的思路相同,都是固定一个数,然后在剩下的区间中寻找和为目标值的元组,其次最重要的是要进行去重 算法讲解 1. 完成排序 2. 固定一个数,求剩下区间中三元组的和等于 target - nums[…

用易查分制作承诺书签订,在线手写签名,一键导出打印

假期将至,为积极落实安全管理规定,单位通常需要下发安全承诺书进行签字确认。 易查分可以实现网上下发安全承诺书通知,让查询者进行签名确认,还可以生成PDF,方便打印一人一张的纸质版承诺书,本次就来介绍如…

flask各种版本的项目,终端命令运行方式的实现

目录 写在前面 一、Flask项目的基本结构 二、使用终端命令运行Flask项目 1. 安装Flask 2. 创建Flask应用 3. 配置FLASK_APP环境变量 4. 运行Flask应用 5. 访问Flask应用 三、Flask CLI的其他功能 1. 创建Flask应用 2. 运行开发服务器 3. 清理缓存文件 4. 运行单元…

补题集合2

VJ 409组队赛2 C - Find a Number 没想到这是一个签到题,因为数据量小,状态并不多,所以可以使用 b f s bfs bfs 去跑每一个状态。令 m o d mod mod 是余数, s u m sum sum 是累加和,那么状态最多就只有 500 ∗ 5…

微信小程序的页面交互1

一、page()函数 每个页面的s代码全部写入对应的js文件的page()函数里面。点击编译,就可以显示js代码的运行效果。注意,每个页面的page()函数是唯一的。 page(&#xff…

Oracle参数文件详解

1、参数文件的作用 参数文件用于存放实例所需要的初始化参数,因为多数初始化参数都具有默认值,所以参数文件实际存放了非默认的初始化参数。 2、参数文件类型 1)服务端参数文件,又称为 spfile 二进制的文件,命名规则…