参考
https://www.cnblogs.com/gjblog/p/14321065.html
矩阵乘法
其他矩阵操作
矩阵实验室,不解释
% 横向复制为3份,纵向复制为2份
repmat([1,2;3,4],2,3)
% ans =
%
% 1 2 1 2 1 2
% 3 4 3 4 3 4
% 1 2 1 2 1 2
% 3 4 3 4 3 4
size([1,2,3;4,5,6],2) %返回矩阵列数,3
size([1,2,3;4,5,6],1) %返回矩阵行数,2
[1+j,1+23j]' %共轭转置
[1+j,1+23j].' %转置
diag([1,2,3])
输入矩阵的话,返回矩阵对角线元素;
输入向量的话,返回以向量为对角线的方阵
输出x到y,固定点数n,点之间间隔相等的的一串向量。不设n默认100点
linspace(x,y,n)
diff([1, 2, 4, 7]) %相当于numpy.diff()
cumsun(A) %相当于numpy.cumsum()
A = 1 2 3
1 2 3
2 3 4
unique(A, 'row')
>> 1 2 3
2 3 4
线性代数
%特征值和特征向量
a = [3 0; 0 0]
[v, d] = eig(a)
%orth求矩阵所有列的标准正交基
a = [3 0; 0 0]
[v, d] = eig(a)
%null求矩阵的零空间的标准正交基
A * null(A) = 0
rref得到矩阵A的简化行阶梯型矩阵
A = 1 1 1
0 2 0
[R, p] = rref(A)
>>
R = 1 0 1
0 1 0
p = 1 2 (p返回阶梯所在的行号)
随机数
randsrc(3,2,[1,1,1,5]) %随机信源,3行2列,符号“1”出现几率提高
randsrc(1,10,[0,1]) %01信源
randsrc(1,10,[-1,1]) %双极性信源
randi([0, MAX], 1, LEN) %输出1行,LEN列矩阵,范围为0 ~ MAX,均匀分布整数
randn(ROW, COL)
>> 输出ROW行COL列符合标准正态分布的随机数N(0,1)
normrnd(mu, delta, 1, LEN)
直接输出1行,LEN列符合正态分布N(mu,delta^2)的随机数,注意输入为标准差
randperm(6)
>> 3 2 6 1 4 5
实现Python中的map,filter,reduce操作
[1,2,3].^2-3 %[-2,1,6]
从矩阵中选出符合条件的元素
x =
1 2 3
4 5 6
7 8 9
>> x(x>=5)
ans =
7
5
8
6
9
绘图
text(2.1, 3.2, 'txt', 'r')
>> 在坐标(2.1, 3.2)处添加红色的文字'txt'
类型转换和进制转换
d=dec2bin([1,2;3,4]) %十进制转二进制字符串
bin2dec(d) %二进制字符串转十进制
num2str([1,2;3,4]) %相当于Python里的str()
>> '1 2'
'3 4'
结构体元胞数组相关
sfield(a, 'a1') %判断是否包含某个字段,包含返回1,不包含返回0
fieldnames(a) %结构体的字段名称输出为一列元胞数组
把结构体存储的变量输出为一列元胞数组中
a.a1 = 'aaa'; a.a2 = 123;
struct2cell(a)
>> {'aaa'}
{123}
将cell中的数据转换成矩阵形式(可以拼接相同格式的数据)
a = {[1 2]} {2 1}
cell2mat(a)
>> [1 2 2 1]