一、基本命令
- 注意每次新定义不同的变量,以避免前面用过的变量名已被赋值再次使用同样变量名而影响之后的计算。
- 默认的数据类型是double(双精度浮点型)8个字节
- a=linspace(1,10,5) 第一位为1,最后一位为10,步长为5的行向量。
- 矩阵中元素的索引
A(2,3)第二行第三列的元素;
A(7)一列接一列地数,数到的第七个元素
A(3,:) 第三行的所有元素
A(:,2) 第二列的所有元素 - length(A) 矩阵A最长的维度
ndims(A) 矩阵A的维度
numel(A) 矩阵A的元素的个数、 - reshape(A,3,4) A有12个元素,将A的元素按一列接一列的顺序,重新排列为一个3行4列的矩阵
- pow2(16) 2的16次方幂
- gcd(a,b) a和b的最大公约数
- factorial(5) 求5的阶乘
- .* 点乘:矩阵相同位置的元素对应相乘
× 矩阵乘法
./ 点除和 / 矩阵除法以此类推 - eye(3,5) 生成一个3行五列的矩阵,前三行为单位矩阵,其他元素为0
- rand(5) 5阶的各元素服从0~1均匀分布的方阵
randn(5) 5阶的各元素服从均值为0,标准差为1正态分布的方阵 (注:方差是标准差的平方)
diag(1:3) 主对角线为1,2,3,其他元素均为0的方阵; diag(A) 取矩阵A的主对角线元素;
diag(A,1) 取矩阵A的上一对角线元素(注:1可以为负数,即下一对角线) - triu(A) 取矩阵A的上三角矩阵
tril(A) 取矩阵A的下三角矩阵 - A.’ 矩阵A转置
A‘ 矩阵A共轭转置
det(A) 方阵的行列式
满秩的矩阵才可逆;初等变换后矩阵的秩不变;秩可以用来判断非齐次方程组解的情况。 - 迹:矩阵主对角线元素的和
trace 矩阵主对角线元素的和 - 1范数 norm(A,1) 所有矩阵列元素绝对值之和的最大值
2范数 norm(A,2) 矩阵的最大特征值的平方根
∞范数 norm(A,2) 所有矩阵行元素绝对值之和的最大值 - B=eig(A) 求矩阵A的全部特征值,并构成向量B
[X,H]=eig(A) H为矩阵A的全部特征值构成的对角阵,X的各列是相应的特征向量(注:特征向量不唯一,但均可由求出的这组特征向量线性表示) - 稀疏储存方式的产生 sparse()
- 文本中的上下标和希腊字母
使用 ^ 字符在标题上显示上标。^ 字符会修改紧随其后的字符。用花括号 {} 包含多个字符以将这些字符放入上标中。
- 在 MATLAB 中,ismember 函数用于检查一个数组的元素是否为另一个数组的成员。data(~ismember()) 这样的表达式通常用于从 data 数组中筛选出不包含在某个指定数组中的元素。
例如,如果你有以下两个数组:
data = [1, 2, 3, 4, 5];
subset = [3, 4, 5];
使用 ~ismember(data, subset) 会返回一个逻辑数组,其中 data 中不在 subset 中的元素对应的位置为 1(真),在 subset 中的元素对应的位置为 0(假)。
然后,使用这个逻辑数组作为索引,可以筛选出 data 中不在 subset 中的元素:
filtered_data = data(~ismember(data, subset));
二、信号处理常用函数
- xcorr函数——互相关
c = xcorr(x,y) 返回矢量长度为2*N-1互相关函数序列,其中x和y的矢量长度均为N,如果x和y的长度不一样,则在短的序列后补零直到两者长度相等。
互相关: r=xcorr(x,y)
归一化互相关: R=xcorr(x,y,‘normalized’)
R
x
y
(
m
)
=
1
R
x
x
(
0
)
∗
R
y
y
(
0
)
r
x
y
\R_{xy}(m) = \dfrac{1}{\sqrt{R_{xx}(0)}*\sqrt{R_{yy}(0)}}r_{xy}\
Rxy(m)=Rxx(0)∗Ryy(0)1rxy
互相关的有偏估计: R=xcorr(x,y,‘biased’)
R
x
y
(
m
)
=
1
N
r
x
y
\R_{xy}(m) = \dfrac{1}{N}r_{xy}\
Rxy(m)=N1rxy
2. awgn函数——给信号添加高斯白噪声
(1) y=awgn(x,SNR)
SNR为自己设定的信噪比
此时默认原信号x的能量为0,加信噪比为SNR的噪声。
(2) y=awgn(x,SNR,‘measured’)
x先测量原信号x的能量,再加信噪比为SNR的噪声。
3. resample——降采样
y=resample(x,p,q)
采样频率从q降为p。
(使用多相滤波器实现对矢量x中的序列在原始采样率的p/q倍上重新采样。p和q必须是正数。y的长度等于ceil(length(x)*p/q).如果x是矩阵,重采样作用于x的列。)
4. fft——快速傅里叶变换
(1)Y=fft(X)
此时返回值Y与X长度一致。说明傅里叶点数与信号长度一样。
(点数不能超过信号长度,会造成频谱畸变。但也不能过低,过低频率分辨率低)。
(2)通过先画双侧频谱,再画单侧频谱(也可以用fftshift)
注意:幅度调整时,实序列fft的结果为双边谱,变为单边谱时幅度要乘2。
而虚序列fft的结果只有单边谱,幅度不用乘2。
三、文件操作
- 读取wav文件
a = wavread(‘filename.wav’) - 将数据保存为mat文件
save(‘DataFileName.mat’, ‘a’)