由于最近在学习无线感知相关内容,分析了WiDarProject中的MATLAB程序,程序里用到的一些信号处理函数不是很懂,所以各种查找资料,最后汇总在这篇文章里,若有错误,欢迎指正!
1、 butter(n, Wn, varargin)
butter函数是求Butterworth数字滤波器的系数,在求出系数后对信号进行滤波时用filter函数。
设计滤波器就是设计滤波器系数[B,A]。
[B,A] = BUTTER(N,Wn,'high') ---用来设计高通滤波器
[B,A] = BUTTER(N,Wn,'low') designs a lowpass filter.--低通滤波器
[B,A] = BUTTER(N,Wn)--带通滤波器
N是滤波器的阶数,不熟的话,大概取个整数就可以了。Wn的确定跟你的采样频率Fs有关。
对于原始信号x。
比如说你的采样频率Fs=1000Hz,设计一个8阶、通带为100-200Hz的带通滤波器:
[b,a]=butter(8,[0.2 0.4])=butter(8,[100/(1000/2) 200/(1000/2) ])
这里Fa=Fs/2,Fa是分析频率
得到滤波器系数后,就可以直接用了。
y=filter(B,A,x)
参考链接:http://www.ilovematlab.cn/thread-57684-1-1.html
2、fliter函数
filter函数是一维的数字滤波器,主要的应用语法如下所示
y = filter(b,a,X)
[y,zf] = filter(b,a,X)
[y,zf] = filter(b,a,X,zi)
y = filter(b,a,X,zi,dim)
[…] = filter(b,a,X,[],dim)
以最简单的 y = filter(b,a,X) 为例
y = filter(b,a,X) 滤除向量X中的数据,其中b是分子系数向量,a是分母系数向量。如果a(1)不等于1的话,则就利用a(1)标准化滤波器系数,可以利用多项式除法使分母变为1;如果 a(1) 等于0,滤波器返回错误值
参考链接:https://blog.csdn.net/qq_38559814/article/details/86521602
3、min函数
M = min(A) 返回A的最小元素
- 如果A是一个向量,那么min(A)返回A的最小元素
- 如果A是一个矩阵,那么min(A)是一个行向量,包含每一列的最小值
- M = min(A,[],dim) 返回沿dim维数的最小元素,例如,如果A是一个矩阵,那么min(A,[],2)是一个列向量,包含每一行的最小值。因为第一维是列,第二维才是行,所以按照行来取最小值,则得到的是一个列向量
- [M,I] = min( ___ )找到A的最小值的索引,并使用前面语法中的任何输入参数在输出向量I中返回它们。如果最小值出现多次,那么min返回与第一次出现相对应的索引
- C = min(A,B) 返回一个数组,其中最小的元素取自A或B。
- 参考链接https://www.cnblogs.com/cloud-ken/p/11260481.html
4、ones函数
ones的作用是产生全1矩阵,ones(N)是产生一个N*N的全1矩阵
5、corrcoef函数 相关系数
R
= corrcoef(A
,B
)
返回两个变量 A
和 B
之间的相关系数
6、mean函数
R
= corrcoef(A
,B
)1、函数功能
求数组的平均数或者均值
2、使用方法
① M = mean(A)
返回沿数组中不同维的元素的平均值。
如果A是一个向量,mean(A)返回A中元素的平均值。
如果A是一个矩阵,mean(A)将其中的各列视为向量,把矩阵中的每列看成一个向量,返回一个包含每一列所有元素的平均值的行向量。
如果A是一个多元数组,mean(A)将数组中第一个非单一维的值看成一个向量,返回每个向量的平均值。
②M = mean(A,dim)
返回A中沿着标量dim指定的维数上的元素的平均值。对于矩阵,mean(A,2)就是包含每一行的平均值的列向量。
3、应用举例
A = [1 2 3; 3 3 6; 4 6 8; 4 7 7];
mean(A)
ans =
3.0000 4.5000 6.0000
mean(A,2)
ans =
2.0000
4.0000
6.0000
6.0000
参考:https://blog.csdn.net/wangyang20170901/article/details/78745587