matlab在信号系统的常用函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab在信号系统的常用函数相关的知识,希望对你有一定的参考价值。

MATLAB 信号处理常用函数 

【一】、 波形产生 

函数名  功能   

sawtooth  产生锯齿波或三角波  
Sinc  产生sinc或函数sin(pi*t)/(pi*t) 
Square  产生方波  
Diric  产生Dirichlet或周期sinc函数

【二】、 滤波器分析和实现 

函数名  功能   

Abs  求绝对值(幅值)  
Freqs  模拟滤波器频率响应 
Angle  求相角  
Freqspace  频率响应中的频率间隔 
Conv  求卷积  
Freqz  数字滤波器频率响应 
Fftfilt  重叠相加法FFT滤波器实现  
Grpdelay  平均滤波器延迟(群延迟) 
Filter  直接滤波器实现  
Impz  数字滤波器的冲激响应 
Filtfilt  零相位数字滤波  
Zplane  离散系统零极点图 
Filtie  Filter 函数初始条件选择

【三】、 线性系统变换 

函数名  功能  

Convmtx  卷积矩阵  
Ss2tf    变系统状态空间形式为传递函数形式 
Ploy2rc  从多项式系数中计算反射系数 
Ss2zp   变系统状态空间形式为零极点增益形式 
Rc2ploy  从反射系数中计算多项式系数 
Tf2ss   变系统传递函数形式为状态空间形式 
Residuez   Z变换部分分式展开或留数计算 
Tf2zp     变系统传递函数形式为零极点增益形式 
Sos2ss    变系统二阶分割形式为状态空间形式 
Zp2sos    变系统零极点形式为二阶分割形式 
Sos2zp    变系统二阶分割形式为零极点增益形式 
Zp2tf     变系统零极点增益形式为传递函数形式 
Ss2sos    变系统状态空间形式为二阶分割形式

   

【四】、 IIR滤波器设计 

Besself   Bessel(贝塞尔)模拟滤波器设计 
Cheby2   Chebyshev(切比雪夫)II型模拟滤波器设计 
Butter    Butterworth(巴特沃思)模拟滤波器设计 
Ellip    椭圆模拟滤波器设计 
Cheby1  Chebyshev(切比雪夫)I 型模拟滤波器设计 
Yulewalk  递归数字滤波器设计

【五】、 IIR滤波器阶选择 

Buttord    Butterworth(巴特沃思)滤波器阶的选择 
Cheb2ord   Chebyshev(切比雪夫)II型滤波器阶的选择 
Ehebord   Chebyshev(切比雪夫)I 型滤波器阶的选择 
Clipord  椭圆滤波器设计阶的选择 模拟原型滤波器设计 
Besselap  Bessel模拟低通滤波器原型  
Cheb2ap   Chebyshev(切比雪夫)II型低通滤波器原型 
Buttap    Butterworth(巴特沃思)模拟低通滤波器原型 
Ellipap  椭圆模拟低通滤波器原型 
Cheb1ap  Chebyshev(切比雪夫)I 型低通滤波器原型

    

【六】、 频率变换 

Lp2bp  低通到带通模拟滤波器转换  
Lp2bs  低通到带阻模拟滤波器变换 
Lp2hp  低通到高通模拟滤波器变换  
Lp2lp  低通到低通模拟滤波器转换

【七】、 滤波器离散化 

Blinear  双线性变换  
Impinvar  冲激响应不变法

【八】、 FIR滤波器设计 

Fir1 基于窗函数的 FIR 滤波器设计—标准响应 
Intfilt  内插FIR滤波器设计 
Fir2   基于窗函数的 FIR 滤波器设计—任意响应 
Remez  Firls  最小二乘FIR滤波器设计  
Remezord  Parks-McCellan 最优 FIR 滤波器 j阶估计

【九】、 窗函数 

Boxcar  矩形窗  
Hanning  Hanning(汉宁)窗 
Triang  三角窗  
Blackman  Blackman(布莱克曼)窗 
Bartlett  Bartlett(巴特得特)窗  
Chebwin  Chebyshev(切比雪夫)窗 
Hamming  Hamming(汉明)窗  
Kaiser  Kaiser(凯泽)窗

【十】、 变换 

Ctz  线性调频Z变换  
Fft  一维快速傅里叶变换 
Dct  离散余弦变换  
Ifft  一维快速傅里叶逆变换 
Idct  逆离散余弦变换  
Fftshift  重新排列 fft的输出 
Dftmtx  离散傅里叶变换矩阵  
Hilbert  Hilbert(希尔伯特)变换

 

【十一】、 统计信号处理 

Cov  协方差矩阵  
Psd  信号功率谱密度(PSD)估计 
Xcov  互协方差函数估计  
Tfe  从输入输出中估计传递函数 
Corrcoef  相关系数矩阵  
Periodogram  采用周期图法估计功率谱密度 
Xcoor  互相关系数估计  
Pwelch  采用 Welch方法估计功率谱密度 
Cohere  相关函数平方幅值估计  
Rand  生成均匀分布的随机数 
Csd  互谱密度估计  
Randn  生成正态分布的随机数

【十二】、 自适应滤波器部分 

Adaptfilt.lms  最小均方(LMS)自适应算法  
Adaptfilt.rls  递推最小二乘(RLS)自适应算法 
Adaptfilt.nlms 归一化最小均方(NLMS)自适应算法

【十三】、 时频分析与小波变换部分 

Spectrogram  短时傅里叶变换  
Idwt  单级离散一维小波逆变换 
Waveinfo  介绍小波工具箱中所有小波的信息 
Wavedec  多级离散一维小波分解 
Cwt  连续一维小波变换  
Appcoef  一维小波变换近似系数 
Dwt  单级离散一维小波变换  
Detcoef  一维小波变换细节系数

【十四】、 二维信号处理 

Conv2  二维卷积  
Xcorr2  二维互相关参数 
Fft2  二维快读傅里叶变换  
Dwt2  单级离散二维小波变换 
Ifft2  二维逆快速傅里叶变换  
Idwt2  单级离散二维小波逆变换 
Filter2  二维数字滤波器  
Waverec2  多级离散二维小波分解

参考技术A MATLAB 信号处理常用函数 【一】、 波形产生 函数名 功能 sawtooth 产生锯齿波或三角波 Sinc 产生sinc或函数sin(pi*t)/(pi*t) Square 产生方波 Diric 产生Dirichlet或周期sinc函数 【二】、 滤波器分析和实现 函数名 功能 Abs 求绝对值(幅值) Freqs 模拟滤波器频率响应 Angle 求相角 Freqspace 频率响应中的频率间隔 Conv 求卷积 Freqz 数字滤波器频率响应 Fftfilt 重叠相加法FFT滤波器实现 Grpdelay 平均滤波器延迟(群延迟) Filter 直接滤波器实现 Impz 数字滤波器的冲激响应 Filtfilt 零相位数字滤波 Zplane 离散系统零极点图 Filtie Filter 函数初始条件选择 【三】、 线性系统变换 函数名 功能 Convmtx 卷积矩阵 Ss2tf 变系统状态空间形式为传递函数形式 Ploy2rc 从多项式系数中计算反射系数 Ss2zp 变系统状态空间形式为零极点增益形式 Rc2ploy 从反射系数中计算多项式系数 Tf2ss 变系统传递函数形式为状态空间形式 Residuez Z变换部分分式展开或留数计算 Tf2zp 变系统传递函数形式为零极点增益形式 Sos2ss 变系统二阶分割形式为状态空间形式 Zp2sos 变系统零极点形式为二阶分割形式 Sos2zp 变系统二阶分割形式为零极点增益形式 Zp2tf 变系统零极点增益形式为传递函数形式 Ss2sos 变系统状态空间形式为二阶分割形式 【四】、 IIR滤波器设计 Besself Bessel(贝塞尔)模拟滤波器设计 Cheby2 Chebyshev(切比雪夫)II型模拟滤波器设计 Butter Butterworth(巴特沃思)模拟滤波器设计 Ellip 椭圆模拟滤波器设计 Cheby1 Chebyshev(切比雪夫)I 型模拟滤波器设计 Yulewalk 递归数字滤波器设计 【五】、 IIR滤波器阶选择 Buttord Butterworth(巴特沃思)滤波器阶的选择 Cheb2ord Chebyshev(切比雪夫)II型滤波器阶的选择 Ehebord Chebyshev(切比雪夫)I 型滤波器阶的选择 Clipord 椭圆滤波器设计阶的选择 模拟原型滤波器设计 Besselap Bessel模拟低通滤波器原型 Cheb2ap Chebyshev(切比雪夫)II型低通滤波器原型 Buttap Butterworth(巴特沃思)模拟低通滤波器原型 Ellipap 椭圆模拟低通滤波器原型 Cheb1ap Chebyshev(切比雪夫)I 型低通滤波器原型 【六】、 频率变换 Lp2bp 低通到带通模拟滤波器转换 Lp2bs 低通到带阻模拟滤波器变换 Lp2hp 低通到高通模拟滤波器变换 Lp2lp 低通到低通模拟滤波器转换 【七】、 滤波器离散化 Blinear 双线性变换 Impinvar 冲激响应不变法 【八】、 FIR滤波器设计 Fir1 基于窗函数的 FIR 滤波器设计—标准响应 Intfilt 内插FIR滤波器设计 Fir2 基于窗函数的 FIR 滤波器设计—任意响应 Remez Firls 最小二乘FIR滤波器设计 Remezord Parks-McCellan 最优 FIR 滤波器 j阶估计 【九】、 窗函数 Boxcar 矩形窗 Hanning Hanning(汉宁)窗 Triang 三角窗 Blackman Blackman(布莱克曼)窗 Bartlett Bartlett(巴特得特)窗 Chebwin Chebyshev(切比雪夫)窗 Hamming Hamming(汉明)窗 Kaiser Kaiser(凯泽)窗 【十】、 变换 Ctz 线性调频Z变换 Fft 一维快速傅里叶变换 Dct 离散余弦变换 Ifft 一维快速傅里叶逆变换 Idct 逆离散余弦变换 Fftshift 重新排列 fft的输出 Dftmtx 离散傅里叶变换矩阵 Hilbert Hilbert(希尔伯特)变换 【十一】、 统计信号处理 Cov 协方差矩阵 Psd 信号功率谱密度(PSD)估计 Xcov 互协方差函数估计 Tfe 从输入输出中估计传递函数 Corrcoef 相关系数矩阵 Periodogram 采用周期图法估计功率谱密度 Xcoor 互相关系数估计 Pwelch 采用 Welch方法估计功率谱密度 Cohere 相关函数平方幅值估计 Rand 生成均匀分布的随机数 Csd 互谱密度估计 Randn 生成正态分布的随机数 【十二】、 自适应滤波器部分 Adaptfilt.lms 最小均方(LMS)自适应算法 Adaptfilt.rls 递推最小二乘(RLS)自适应算法 Adaptfilt.nlms 归一化最小均方(NLMS)自适应算法【十三】、 时频分析与小波变换部分 Spectrogram 短时傅里叶变换 Idwt 单级离散一维小波逆变换 Waveinfo 介绍小波工具箱中所有小波的信息 Wavedec 多级离散一维小波分解 Cwt 连续一维小波变换 Appcoef 一维小波变换近似系数 Dwt 单级离散一维小波变换 Detcoef 一维小波变换细节系数 【十四】、 二维信号处理 Conv2 二维卷积 Xcorr2 二维互相关参数 Fft2 二维快读傅里叶变换 Dwt2 单级离散二维小波变换 Ifft2 二维逆快速傅里叶变换 Idwt2 单级离散二维小波逆变换 Filter2 二维数字滤波器 Waverec2 多级离散二维小波分解

Matlab - 常用函数集锦

在使用matlab进行信号处理和图形绘制过程中,某些函数被频繁调用,所以有必要将这些常用函数进行总结归类。

滤波函数

低通滤波

function [filtered_signal,filtb,filta]=lopass_butterworth(inputsignal,cutoff_freq,Fs,order)
% Low-pass Butterworth filter
% [filtered_signal,filtb,filta] = lopass_butterworth(inputsignal,cutoff_freq,Fs,order)
%
% This is simply a set of built-in Matlab functions, repackaged for ease of
% use by Chad Greene, October 2012.
%
% INPUTS:
% inputsignal = input time series
% cutoff_freq = filter corner frequency
% Fs = data sampling frequency
% order = order of Butterworth filter
%  
% OUTPUTS:
% filtered_signal = the filtered time series
% filtb, filta = filter numerator and denominator (optional)
%
% EXAMPLE 1:
% load train
% t = (1:length(y))/Fs;
% y_filt = lopass_butterworth(y,900,Fs,4); % cut off at 900 Hz
% figure
% plot(t,y,'b',t,y_filt,'r')
% xlabel('time in seconds')
% box off
% legend('unfiltered','filtered')
% sound(y,Fs)      % play original time series
% pause(2)         % pause two seconds
% sound(y_filt,Fs) % play filtered time series

nyquist_freq = Fs/2;  % Nyquist frequency
Wn=cutoff_freq/nyquist_freq;    % non-dimensional frequency
[filtb,filta]=butter(order,Wn,'low'); % construct the filter
filtered_signal=filtfilt(filtb,filta,inputsignal); % filter the data with zero phase

高通滤波

function [filtered_signal,filtb,filta]=hipass_butterworth(inputsignal,cutoff_freq,Fs,order)
% High-pass Butterworth filter
% [filtered_signal,filtb,filta] = hipass_butterworth(inputsignal,cutoff_freq,Fs,order)
%
% This is simply a set of built-in Matlab functions, repackaged for ease of
% use by Chad Greene, October 2012.
%
% INPUTS:
% inputsignal = input time series
% cutoff_freq = filter corner frequency
% Fs = data sampling frequency
% order = order of Butterworth filter
%
% OUTPUTS:
% filtered_signal = the filtered time series
% filtb, filta = filter numerator and denominator (optional)
%
% EXAMPLE 1:
% load train
% t = (1:length(y))/Fs;
% y_filt = hipass_butterworth(y,900,Fs,4); % cut off at 900 Hz
% figure
% plot(t,y,'b',t,y_filt,'r')
% xlabel('time in seconds')
% box off
% legend('unfiltered','filtered')
% sound(y,Fs)      % play original time series
% pause(2)         % pause two seconds
% sound(y_filt,Fs) % play filtered time series

nyquist_freq = Fs/2;  % Nyquist frequency
Wn=cutoff_freq/nyquist_freq;    % non-dimensional frequency
[filtb,filta]=butter(order,Wn,'high'); % construct the filter
filtered_signal=filtfilt(filtb,filta,inputsignal); % filter the data with zero phase

带通滤波

function [filtered_signal,filtb,filta]=bandpass_butterworth(inputsignal,cutoff_freqs,Fs,order)
% Bandpass Butterworth filter
% [filtered_signal,filtb,filta] = bandpass_butterworth(inputsignal,cutoff_freq,Fs,order)
%
% This is simply a set of built-in Matlab functions, repackaged for ease of
% use by Chad Greene, October 2012.
%
% INPUTS:
% inputsignal = input time series
% cutoff_freqs = filter corner frequencies in the form [f1 f2]
% Fs = data sampling frequency
% order = order of Butterworth filter
%
% OUTPUTS:
% filtered_signal = the filtered time series
% filtb, filta = filter numerator and denominator (optional)
%
% EXAMPLE 1:
% load train
% t = (1:length(y))/Fs;
% y_filt = bandpass_butterworth(y,[800 1000],Fs,4); % cut off below 800 Hz and above 1000 Hz
%
% figure
% plot(t,y,'b',t,y_filt,'r')
% xlabel('time in seconds')
% box off
% legend('unfiltered','filtered')
% sound(y,Fs)      % play original time series
% pause(2)         % pause two seconds
% sound(y_filt,Fs) % play filtered time series

nyquist_freq = Fs/2;  % Nyquist frequency
Wn=cutoff_freqs/nyquist_freq;    % non-dimensional frequency
[filtb,filta]=butter(order,Wn,'bandpass'); % construct the filter
filtered_signal=filtfilt(filtb,filta,inputsignal); % filter the data with zero phase

带阻滤波

function [filtered_signal,filtb,filta]=bandstop_butterworth(inputsignal,cutoff_freqs,Fs,order)
% Band-stop Butterworth filter
% [filtered_signal,filtb,filta] = bandstop_butterworth(inputsignal,cutoff_freqs,Fs,order)
%
% This is simply a set of built-in Matlab functions, repackaged for ease of
% use by Chad Greene, October 2012.
%
% INPUTS:
% inputsignal = input time series
% cutoff_freqs = filter corner frequencies in the form [f1 f2]
% Fs = data sampling frequency
% order = order of Butterworth filter
%
% OUTPUTS:
% filtered_signal = the filtered time series
% filtb, filta = filter numerator and denominator (option 大专栏  Matlab - 常用函数集锦al)
%
% EXAMPLE 1:
% load train
% t = (1:length(y))/Fs;
% y_filt = bandstop_butterworth(y,[800 1000],Fs,4); % cut off below 800 Hz and above 1000 Hz
%
% figure
% plot(t,y,'b',t,y_filt,'r')
% xlabel('time in seconds')
% box off
% legend('unfiltered','filtered')
% sound(y,Fs)      % play original time series
% pause(2)         % pause two seconds
% sound(y_filt,Fs) % play filtered time series

nyquist_freq = Fs/2;  % Nyquist frequency
Wn=cutoff_freqs/nyquist_freq;    % non-dimensional frequency
[filtb,filta]=butter(order,Wn,'stop'); % construct the filter
filtered_signal=filtfilt(filtb,filta,inputsignal); % filter the data with zero phase

绘图函数

function [  ] = setPlot( varargin )
% setPlot()
% setPlot(title)
% setPlot(title,xlabel)
% setPlot(title,xlable,ylabel)
% setPlot(title,xlabel,ylabel,xlim)
% setPlot(title,xlable,ylabel,xlim,ylim)

narginchk(0,5);     % 判断输入参数是否足够

grid on;
axis tight;

if nargin>=1
    title(varargin{1});
end

if nargin>=2
    xlabel(varargin{2});
end

if nargin>=3
    ylabel(varargin{3});
end

if nargin>=4
    xlim(varargin{4});
end

if nargin>=5
    ylim(varargin{5});
end

end

信号处理函数

频谱分析

function [freq,amp]=fft_signal(signal,fs,N)
% Spectrum analysis
% INPUTS:
% signal = input time series
% fs = data sampling frequency
% N = data length of signal
%
% OUTPUTS:
% freq = frequency of Spectrum
% amp = amplitude of Spectrum
%
% EXAMPLE 1:
% fs = 100;
% N = fs*10;
% t = (0:N-1)/fs;
% y = sin(2*pi*10*t);
% [freq,amp] = fft_signal(y,fs,N);
% plot(freq,amp);

amp = 2*abs(fft(signal))/N;        % 求取信号的幅度谱
amp = amp(1:fix(length(amp)/2));       % 截取有效部分
freq=(0:length(amp)-1)*fs/N;       % 横坐标代表频率
end

幅值分布

function [ amp,dist ] = ampDist( signal,sectionNum )
% Calculate the amplitude distribution of the signal
% INPUTS:
% signal : The signal to be analyzed
% sectionNum : Number of segments
%
% OUTPUTS:
% amp : Amplitude after segmentation
% dist :Amplitude distribution
%
% EXAMPLE 1:
% fs = 1000;
% N = fs*100;
% y = wgn(1,N,10);     % 高斯白噪声
% [amp,dist] = ampDist(y,500);
% bar(amp,dist);

yMin = min(signal);
yMax = max(signal);

amp = linspace(yMin,yMax,sectionNum);
dist = hist(signal,amp);
dist = dist./length(signal);
end

LMS最小均方算法

function [ y_error, y_filter ] = LMS( x_input,x_dest,M,u )
% LMS 最小均方算法
% INPUTS:
% x_input    原始信号
% x_dest     期望信号
% M          阶次
% u          步长因子
%
% OUTPUTS:
% y_error    误差信号
% y_filter   滤波器信号输出
%
% EXAMPLE 1:
% load train
% t = (1:length(y))/Fs;
% M = 2; u = 0.5;
% y_dest = (max(y)-min(y))/2*cos(2*pi*18*t);      % 参考信号
% [y_error,y_filter] = LMS(y,y_dest,M,u);
% plot(t,y_error,t,y_filter);

N = length(x_input);
y_filter = zeros(1,N);
y_error  = zeros(1,N);
h = zeros(1,M);

for k=M:N
    h_old = h;
    y_filter(k) = x_dest(k:-1:k-M+1)*h_old';
    y_error(k)  = x_input(k) - y_filter(k);
    h = h_old + 2*u*y_error(k)*x_dest(k:-1:k-M+1);
end

end

EMD经验模态分解

function imf = emd(x)
% Empiricial Mode Decomposition (Hilbert-Huang Transform)
% imf = emd(x)
% Funcs : ismonotonic, isimf, getspline, findpeaks

x   = transpose(x(:));      % 将x变为一维向量
imf = [];
while ~ismonotonic(x)
   x1 = x;
   sd = Inf;
   cnt=0;
   while (sd > 0.1) || ~isimf(x1)
      s1 = getspline(x1);
      s2 = -getspline(-x1);
      x2 = x1-(s1+s2)/2;

      sd = sum((x1-x2).^2)/sum(x1.^2);
      x1 = x2;
      cnt=cnt+1;
   end
%    cnt

   imf{end+1} = x1;
   x          = x-x1;
end
imf{end+1} = x;

% FUNCTIONS
% 判断信号的单调性
function u = ismonotonic(x)

u1 = length(findpeaks(x))*length(findpeaks(-x));
if u1 > 0
    u = 0;
else
    u = 1;
end

% 判断信号是否满足IMF条件
% 条件:极大值点数和极小值点数之和与过零点数相等或相差1?
function u = isimf(x)

N  = length(x);
u1 = sum(x(1:N-1).*x(2:N) < 0);
u2 = length(findpeaks(x))+length(findpeaks(-x));
if abs(u1-u2) > 1
    u = 0;
else
    u = 1;
end

% 使用三次样条函数,得到包络线
function s = getspline(x)

N = length(x);
p = findpeaks(x);
s = spline([0 p N+1],[0 x(p) 0],1:N);

% 寻找极大值点
function n = findpeaks(x)
% Find peaks.
% n = findpeaks(x)

n    = find(diff(diff(x) > 0) < 0);
u    = find(x(n+1) > x(n));
n(u) = n(u)+1;

以上是关于matlab在信号系统的常用函数的主要内容,如果未能解决你的问题,请参考以下文章

Matlab - 常用函数集锦

信号处理常用matlab函数之随机数产生

信号处理常用matlab之数字滤波器及滤波函数

请问如何在matlab中对信号进行去噪操作。最好用函数的形式,方便其他程序调用

信号处理常用matlab之16数据链信号生成

信号处理常用matlab之16数据链信号生成