MATLAB 学习笔记——5. 脚本与函数
.M 文件 MATLAB 的.m文件可以分成两类: 脚本文件,不接受输入参数,它们处理工作区中的变量和数据。 函数文件,可接受输入参数,并且可以有返回值,内部变量是函数的局部变量。 MATLAB 对于 .m...
MATLAB 学习笔记——4. 流程控制
在划分控制结构所对应的代码块时,编程语言通常采用如下三种做法: 基于大括号{}:例如C/C++,Java 基于end标记:例如FORTRAN,MATLAB 基于缩进:Python MATLAB 受到 FORTRAN 的影响很大,也采用基于end的代码块标记,并不使用大括号{}来划分代码结构。 if 条件语句 提供例子即可 123if x>1 x=1;end 12345if x>1 y=x;else y=1;end 1234567if x>10 y=x;elseif x>0 y=1;else y=0end switch 条件语句 MATLAB支持基本的switch语句,我们可以判断表达式的值以进入不同的分支,不需要在分支结束使用break,因为不会进入下一个分支,默认分支为otherwise。MATLAB并不要求case后面的结果是常量。 12345678switch x case 1 z=1 case 2 z=2 ...
MATLAB 学习笔记——3. 结构体数组和元胞数组
在编程实践中,仅仅只靠浮点数数组还是不够的,我们还需要其他更灵活的数据结构(运行效率也会更慢),最常见的数据结构是结构体数组和元胞数组。 结构体数组 虽然MATLAB官方将其称为结构体数组,但是实际上不管是从使用还是实现的角度,将其称为字典都更合适。在C++的语境中,结构体约等于自定义类型,而对于MATLAB,自定义类型和结构体数组是截然不同的。 结构体数组(struct)是 MATLAB 中一种非常灵活的具名数据类型,可以将不同类型的数据直接组合在一起,每个字段具有名称,可以包含不同类型和大小的数据,结构体数组使得组织和管理复杂数据更加方便。 结构体数组的使用非常灵活,可以使用点符号直接创建 12345% 此前person未定义% 创建一个结构体数组并添加字段person.name = 'John Doe';person.age = 30;person.height =...
MATLAB 学习笔记——2. 矩阵
概述 MATLAB 对于矩阵的支持非常好,以矩阵运算为代表的基本运算功能一直是 MATLAB 引以为自豪的核心与基础。我们可以把向量和矩阵都视作矩阵进行统一的操作。在下文中我们默认讨论二维矩阵,但 MATLAB 支持多维矩阵。行向量即行数为 1 的矩阵,列向量即列数为 1 的矩阵。 在内存中,MATLAB 使用列主序进行连续存储,与 Fortran 相同,与 C 语言是反的。在下标的使用中,MATLAB 默认下标从 1 开始,与 Fortran 相同,与 C 语言等绝大部分编程语言都不同。 矩阵的尺寸信息可以通过下面的语句获取: size(A) 行数和列数,返回一个1x2的行向量; size(A,1) 行数; size(A,2) 列数。 注意: MATLAB 对于矩阵的支持是非常彻底的,甚至标量都是被视作 1 行...
MATLAB 学习笔记——1. 基础
之前对 MATLAB 的使用都是轻量级的,因此总是不太熟,趁着必须要用 MATLAB 的机会,小结一下 MATLAB 的基本语法,便于查阅。(2022年9月) 之前的MATLAB笔记还是太简陋了,必须加上面向对象等部分组成更完整的系列笔记。因为现在手上的代码还是太乱了,必须彻底重构一下,先把笔记补上。(2024年6月) 基本语法 注释:MATLAB 使用百分号%进行单行注释,使用%{...%}进行多行注释(不常见),使用%%开头的内容不仅是注释,而且会被视作节标题。(在字符数组中%仍然被用于占位符) 分号:; MATLAB 并不需要强制使用分号作为语句的结尾,以空格或回车结尾即可。不使用分号结尾时会把计算结果显示出来,使用分号结尾则会抑制计算结果的显示。 续行符:在第一行的结尾使用...可以把命令接续到第二行。(如果直接把...接在数字后面会报错,可以加空格) 命令补全:Tab 键。 对命令行窗口清屏:clc MATLAB 几乎所有数据都是矩阵:行向量是行数为 1 的矩阵,数是行数列数均为 1 的矩阵,甚至一个无效命令,它的返回值[]都是一个 0 行...
UML类图速成
...
Cpp Pimpl 模式
Pimpl(Pointer...
Linux ssh 笔记
详细记录一下关于ssh的内容,这部分内容比较繁杂。 基本使用(1) ssh 最基本的用途就是登录远程服务器 1ssh user@hostname 其中: user是登录用户名 hostname是主机名,它可以是域名,也可以是某个具体的 IP 地址或局域网内部的主机名。 可以缺省用户名,此时将使用本地用户名作为远程服务器的登录用户名。 1ssh hostname 用户名也可以通过-l参数指定,这样用户名和主机名就不用写在一起了,在脚本中可能更方便 1ssh -l username hostname ssh 会默认连接远程服务器的22端口,使用-p参数也可以指定其他端口(同时也要修改远程服务器的监听端口) 1ssh -p 8821 foo.com ssh 在连接到远程服务器后会进行验证:如果第一次通过ssh连接某一台服务器, 命令行会显示一段文字,表示不认识这台机器,提醒用户确认是否需要连接 123The authenticity of host 'foo.com (192.168.121.111)' can't be...
C/Cpp 枚举类与强枚举类
整理一下关于C/C++中枚举类的用法。 概述 C和C++中提供了枚举类型,用于定义一组相关的命名离散常量, 通常直接使用非负整数实现,并且枚举可以很方便地和非负整数进行相互转换。 但是这不符合C++类型系统的设计要求,C++将之前的枚举称为弱枚举类型,并且提供了更加安全的强枚举类型, 强枚举相比弱枚举有如下优点: 作用域限制:枚举成员不会污染所在作用域的命名空间。 类型安全:强类型枚举不允许隐式转换为整数,必须显式进行转换。 明确的基础类型:可以指定枚举成员的基础类型,默认是int。 弱枚举类型 使用enum定义枚举类型和枚举变量,例如 12345enum DAY{ MON, TUE, WED, THU, FRI, SAT, SUN};enum DAY day; 也可以将它们合在一起简写 1234enum DAY{ MON, TUE, WED, THU, FRI, SAT, SUN} day1, day2; 使用枚举类例如 12345678910111213#include <stdio.h>enum DAY...
Cpp 进阶笔记——3.引用折叠、万能引用和完美转发
引用折叠规则 引入了右值引用后,我们必须要处理右值引用所带来的一系列类型推导问题,因为C++不允许“引用的引用”这种类型存在, 对于涉及两个连续出现的引用修饰词的类型推导时,定义了如下的引用折叠规则: 1234& + & -> && + && -> &&& + & -> &&& + && ->...