MATLAB基础语法¶
- b站: 0零基础入门matlab教程基础版
- 最后图像导出值得一看
- up主很多知识都没有讲清楚,也遗漏了很多点;没有强调代码的规范性,何时加
;一头雾水;他自己没有重视教程的录制 - 优点是短,可以快速上手,官方文档是很好的伙伴
- b站: 大师兄数学建模
- matlab帮助文档
- thysrael的博客
界面认识¶
clc 清除终端
新建 > 脚本 新文件
clear all 清除右侧工作区
%% 独占一行的注释(有上下横线分割)
% 单行注释
下标从1开始
;
数据类型¶
字符串¶
-
单引号括住
-
abs(s)返回s变量的ASCII码 -
char(97)返回ASCII码对应的字符,即a -
num2str(X) s = num2str(X)将数值数组转换为表示数字的字符数组num2str(X,precision)返回表示数字的字符数组,最大有效位数由precision指定-
s = num2str(X, formatSpec)将formatSpec指定的格式应用到X所有元素 -
length(str)返回字符串长度 -
合并字符串
strcat('字符串1','字符串2')['字符串1','字符串2']['字符串1' '字符串2']
矩阵¶
A = [1 2 3; 4 5 2; 3 2 7]矩阵同一行用,或分隔B = A'A的转置C = A(:)竖着拉伸,得一个列向量D = inv(A)逆矩阵A * D矩阵乘法A * 2A .* 2每个元素都扩大两倍A .^ 2各个元素乘方A ^ 2相当于A * A-
E = zeros(10, 5, 3)3个维度,每个维度10行5列全是0的矩阵 -
E(:, :, 1) = rand(10, 5) rand- 均在0~1之间
X = rand返回从区间 (0,1) 的均匀分布中得到的随机标量X = rand(n)返回一个均匀分布的随机数组成的n×n矩阵X = rand(sz1,...,szN)返回由随机数组成的sz1×...×szN数组,其中sz1,...,szN指示每个维度的大小。例如:rand(3,4)返回一个 3×4 的矩阵X = rand(sz)返回由随机数组成的数组,其中大小向量sz定义size(X)。例如:rand([3 4])返回一个 3×4 的矩阵X = rand(___,typename)返回由typename数据类型的随机数组成的数组。typename输入可以是single或doubler = a + (b-a).*rand(N,1)生成区间 (a,b) 内的N个随机数X = rand([3,2,3])生成 3×2×3 数组,X(:,:,1)是第一个维度的矩阵,即X(:,:,1) = rand(3, 2)randirandi(iMax)在开区间(0, iMax)中的随机数randi(iMax, m, n)m*n 矩阵r = randi([iMin,iMax],m,n)在开区间(iMin,iMax)生成 m*n 随机矩阵- 特征值和特征向量
E = eig(A)求A的全部特征值,返回由特征值构成的向量[V,D]=eig(A)求A的全部特征值,构成对角阵D,A的特征向量构成V的列向量(V的每一列是D相同列的特征值的的特征向量)
元胞数组¶
- 像 C++ 中的类
A = cell(1, 6)生成1行6列,每个元素是[]A[2] = eye(3)第二个盒子成了 3*3 double 矩阵A[5] = magic(5)生成5阶幻方(1~25排成矩阵,行、列、主副对角线的和都相等,为 n*(n^2+1)/2
结构体¶
- python中的字典
books = struct('name',{{'Machine Learning','Data Mining'}},'price',[30 40])books.name相当于pythonbooks["name"]books.name(1)返回'Machine Learning',取出cellbooks.name[1]返回Machine Learning,取出字符串
矩阵操作¶
定义¶
B = 1:2:9 从最小值1开始,2步2步地跳,保证所有元素不大于9
C = repmat(B, 3, 2) C由3*2个B铺成
D = ones(2, 4) 2行4列元素均为1的矩阵
四则运算¶
F = A .* B 对应位相乘
G = A / B 相当于A乘B的逆
矩阵的下标¶
程序结构¶
循环结构¶
分支结构¶
二维平面绘图¶
例:画正弦函数¶
plotyy函数返回的值是一个大小为3的结构体,其中的第一个元素AX是一个大小为2的结构体(就好像集合里包含集合一样),这个AX里的两个元素分别是两个曲线的坐标系,(用AX(1)就可以取出其中的第一个元素,AX(2)类似),分别用程序中用get函数获得了两个坐标系中y轴的标签(即ylabel)的地址,这样就可以对y轴标签进行编辑了。set函数的第一个参数就是这个地址。第二个参数表示“我要设置这个ylabel的字符串”(所以参数是'String')。第三个参数表示“我设置的字符串是什么”。 而H1,H2,则是这个大小为3的结构体中的第二个和第三个元素。它们分别表示两条曲线本身。所以set函数的第一个参数就是H1或H2。第二个参数表示“我要设置这个H1或H2的线条的风格"(所以参数是LineStyle),第三个参数表示“我设置的线条风格是什么”。 而至于AX(1),AX(2),H1,H2是怎么用一个变量来表示整个坐标系,或者整个曲线的呢?我们平时的变量只能表示一个数或者一堆数的啊?那是因为AX(1),AX(2),H1,H2的类型既不是整数,也不是实数,也不是整数或实数数组,而是官方自己定义的一个复杂变量类型。AX(1),AX(2)的类型是axes,H1,H2的类型是line。整数和axes都是类型
图像参数¶
颜色¶
| 颜色 | 字符 | 颜色 | 字符 |
|---|---|---|---|
| 红 | r | 粉 | m |
| 绿 | g | 青 | c |
| 蓝 | b | 白 | w |
| 黄 | y | 黑 | k |
线型¶
| 线型 | 符号 | 示例 |
|---|---|---|
| 实线 | - | _________ |
| 虚线 | -- | --------------- |
| 冒号线 | : | .................. |
| 点画线 | -. | _ . _ . _ . _ . |
数据标记点¶
三维立体绘图¶
函数¶
自定义¶
输出函数和输入函数¶
sum求和函数¶
向量直接求和:
矩阵要指明按行还是按列求和:
size¶
返回一个行向量,第一个元素是矩阵的行数,第二个元素是矩阵的列数
