MATLAB 笔记摘要
0. Basics
赋单个值:
a = 1
(内部函数):
d=cos(a)
特殊变量:
ans
分号,阻止输出:
;
e = a * d;
(命令行工具):
↑
and↓
arrow所有MATLAB变量都是多维数组,其中矩阵是二维数组
创建数组:
a = [1 2 3 4]
(空格分隔元素)a = [1,2,3,4]
(逗号分隔元素)这里a
是个行向量(row vector)创建矩阵(1),用分号分隔行:
a = [1 2 3; 4 5 6; 7 8 10]
或a = [1,2,3; 4,5,6; 7,8,10]
创建矩阵(2),用内置函数(
ones
,zeros
,rand
, ...):z = zeros(5, 1)
(5行1列全是0的矩阵)(ones
,rand
用法也差不多。这几个函数都有很多变体)创建矩阵(3),记一个生成幻方矩阵的函数
magic
:magic(4) := [16 2 3 13; 5 11 10 8; 9 7 6 12; 4 14 15 1]
矩阵+数,矩阵里每个元素+数:
a = [1 2 3; 4 5 6]; b = a + 10;
(b := [11 12 13; 14 15 16]
)对矩阵应用单参数函数(如
sin
),对矩阵里每个元素应用该函数:a = [1 2; 3 4]; b = sin(a);
(b := [sin(1) sin(2); sin(3) sin(4)]
)矩阵转置操作符
'
:a = [1 2; 3 4]; b = a';
(b := [1 3; 2 4]
)(名词解释):inverse, 矩阵的逆
inv
;identity matrix, 单位矩阵(内部原理1):MATLAB使用浮点类型存数,可能有精度问题
format
命令,控制显示格式:format long
format short
等(均不改变数值的内部表示)矩阵点乘
.*
,对应元素分别相乘:a = [1 2 3; 4 5 6]; b = [5 4 3; 2 1 0]; c = a .* b;
(c := [5 8 9; 8 5 0]
)矩阵点除
./
,对应元素分别相除;矩阵点幂.^
,对应元素分别求幂矩阵连接(concatenation),矩阵连接成一个大矩阵:
a = [1 2 3; 4 5 6]; aa1 = [a a]; aa2 = [a; a];
(aa1 := [1 2 3 1 2 3; 4 5 6 4 5 6]; aa2 := [1 2 3; 4 5 6; 1 2 3; 4 5 6]
)虚数:
sqrt(-1) := 0 + 1i
i/j
,特殊变量,默认表示虚数单位,MATLAB中可以被赋值(最好别...)虚数
a+bi/j
:a = 0 + 2.5j; b = [3 + 2j 6 + 10j];
矩阵索引(1),按维度索引:
a = magic(4); a(4, 2) := 14
(先行后列)矩阵索引(2),线性索引:
a = magic(4); a(12) := 15
(一列一列indexing)矩阵索引(3),索引从1开始
矩阵索引(4)——取值(等号右的索引),不能超过数组维度
矩阵索引(5)——赋值(等号左的索引),可以超过数组维度,赋值后会扩展矩阵,用0填充其余元素位置
冒号操作符(1)——取范围:
2:3 := [2 3]; 1:4 := [1 2 3 4]
冒号操作符(2)——用于矩阵索引:
a = magic(4); a(1:3, 2) := a([1 2 3], 2); a(3, :) := a(3, 1:4) := a(3, [1 2 3 4])
冒号操作符(3)——三元操作符
<start>:<step>:<end(INCLUDED)>
:0:10:40 := [0 10 20 30 40]
(二元时候相当于省略step,此时step为1)查看变量(workspace variables):
whos
保存变量到文件,加载变量文件到workspace variables:
save ***.mat
load ***.mat
字符串(1):
a = 'doge'
字符串(2)串中的单/双引号:
good_doge = 'doge''s good'
(也可以单双引号交叉使用)字符串(3)拼接:
good_doge = ['do' 'ge']; good_doge := 'doge'
字符串(4)数字转换成字符串:
num2str
int2str
函数调用(1)多返回值:
A = [1 3 5]; [maxA, location] = max(A);
(maxA := 5; location := 3
)函数调用(2)也可以只接收返回值的其一:
max(A) := 5
函数调用(3)无参数时不必写括号
清除屏幕函数:
clc
(无参数)plot(1):
plot(x坐标们,y坐标们)
plot(2):
plot(x坐标们,y坐标们,线样式如'g--' 'r:*')
plot(3):标注(
xlabel('...')
ylabel('...')
title('...')
legend('...', ...)
)plot(4):每次plot动作时,默认会清除图里的所有内容包括label
plot(5)保留plot内容:
hold on
对应,hold off
(从这里开始,变得没有耐心了)
函数
function [ret, val, list] = func_name(para, list) ... end
function no_ret_val_func(para, list)
零碎
[THETA, R] = cart2pol(X, Y)
直角坐标转换极坐标