学习材料
- b站: 0零基础入门matlab教程基础版
- 最后图像导出值得一看
- up主很多知识都没有讲清楚,也遗漏了很多点;没有强调代码的规范性,何时加
;
一头雾水;他自己没有重视教程的录制 - 优点是短,可以快速上手,官方文档是很好的伙伴
- 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)
返回字符串长度
矩阵
-
A = [1 2 3; 4 5 2; 3 2 7]
矩阵 -
B = A'
A的转置 -
C = A(:)
竖着拉伸 -
D = inv(A)
逆矩阵 -
A * D
矩阵乘法 -
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
或double
r = a + (b-a).*rand(N,1)
生成区间 (a,b) 内的N
个随机数X = rand([3,2,3])
生成 3×2×3 数组,X(:,:,1)
是第一个维度的矩阵,即X(:,:,1) = rand(3, 2)
-
randi
randi(iMax)
在开区间(0, iMax)
中的随机数randi(iMax, m, n)
m*n 矩阵r = randi([iMin,iMax],m,n)
在开区间(iMin,iMax)
生成 m*n 随机矩阵
元胞数组
- 像 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)
把B矩阵按行重复3次,按列重复2次
D = ones(2, 4)
2行4列元素均为1的矩阵
四则运算
F = A .* B
对应位相乘
G = A / B
相当于A乘B的逆
矩阵的下标
A = magic(5)
B = A(2,3) % 取到a23元素
C = A(3,:) % 取第三行,:表示所有
D = A(:,4) % 取第4列
[m, n] = find(A > 20) % 找到大于20的序号值/矩阵,下标
程序结构
循环结构
for 循环变量 = 初值:步长:终值 % 步长默认为1
执行语句;
end
while 条件表达式
执行语句;
end
分支结构
if 条件
语句;
end
if 条件1
语句体1;
elseif 条件2
语句体2;
else
语句体3;
end
switch 表达式
case 表达式1
语句体1;
case 表达式2
语句体2;
otherwise
语句段n;
end
二维平面绘图
例:画正弦函数
x = 0:0.01:2*pi % x从0取到2pi
y = sin(x)
figure % 建立一个幕布
plot(x, y) % 绘制图像
title('y = sin(x)') % 给图像加标题
xlabel('x') % x轴
ylabel('sin(x)') % y轴
xlim([0 2*pi]) % 图像尾恰靠在边缘
x = 0:0.01:20;
y1 = 200*exp(-0.05*x).*sin(x);
y2 = 0.8*exp(-0.5x).*sin(10*x);
figure
[AX,H1,H2] = plotyy(x,y1,x,y2,'plot') % 共用x轴
set(get(AX(1),'Ylabel'),'String','Slow Decay') % AX(1)代表左侧y轴,AX(2)代表右侧y轴
set(get(AX(2),'Ylabel'),'String','Fast Decay')
xlabel('Time (\musee)')
title('Multiple Decay Rates')
set(H1,'LineStyle','--') % 设置线型
set(H2,'LineStyle',':')
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 |
线型
线型 | 符号 | 示例 |
---|---|---|
实线 | - | ___________________________ |
虚线 | -- | --------------- |
冒号线 | : | .................. |
点画线 | -. | _ . _ . _ . _ . |
数据标记点
三维立体绘图
t = 0:pi/50:10*pi;
plot3(sin(t),cos(t),t) % x,y,z
xlabel('sin(t)')
ylabel('cos(t)')
zlabel('t')
grid on % 加网格线
axis square % 使整个图(连同坐标系)呈方体
标签:返回,rand,H2,基础,H1,矩阵,语法,MATLAB,AX
From: https://www.cnblogs.com/chasetsai/p/18351050