![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
MATLAB数字信号处理
zxcwxkp
积蓄力量
展开
-
MATLAB实现频谱细化分析
一、函数调用1.exzfft_ma函数(1)函数格式:[y,freq]=exzfft_ma(x,fe,fs,nfft,D)其中x是被测信号,x的长度要大于ntff*D。fe是细化区间的中心频率,fs是采样频率,nfft是细化fft的长度,D是细化倍数。输出变量y是细化fft后的输出,freq是细化fft后的频率刻度。(2)函数代码:function [y,freq,c]=exzfft_ma(x,fe,fs,nfft,D)nt=length(x); % 计算读入数据长度f原创 2020-10-19 17:50:01 · 4533 阅读 · 5 评论 -
MATLAB实现短时傅里叶变换
一、短时傅里叶变换的定义离散傅里叶变换使用的是一种全局变换,因为它表示一段时间内平均的频率特性,无法表述信号的时域局域性质,为了能够分析处理非平稳信号,人们对离散傅里叶变换进行了推广,提出了短时傅里叶变换。表达式如下所示:短时傅立叶采用滑动窗口机制,设定窗口大小和步长,让窗口在时域信号上滑动,分别计算每个窗口的傅立叶变换,形成了不同时间窗口对应的频域信号,拼接起来就成为了频率随时间变化的数据(时频信号)。二、函数调用1.短时傅里叶变换tfrstft函数:[tfr,t,f]=tfrstft(x,原创 2020-10-19 15:54:37 · 24120 阅读 · 8 评论 -
MATLAB构造分段函数信号
一、题目要求二、解决方案fs=1000; % 采样频率tt=(0:1000)'/fs; % 时间刻度% 构成信号x=sin(2*pi*400*tt).*(tt<=0.3)+sin(2*pi*200*tt).*(tt>0.3&tt<=0.6)+sin(2*pi*100*tt).*(tt>0.6&tt<=0.8)+sin(2*pi*50*tt).*(tt>0.8);...原创 2020-10-18 17:57:09 · 2835 阅读 · 0 评论 -
MATLAB实现数据延拓
一、前项与后向预测1.函数调用:2.范例:滤波后的数据一般会在输出信号的初始端有瞬态效应,利用对信号的两端延拓,消除瞬态效应,此处使用的是零相位滤波器。clear all; clc; close allN = 1000; % 数据长度Fs = 1000; % 采样频率t = (0:N-1)/Fs; % 时间刻度% 滤波器设计fp=[3 15]; % 滤波原创 2020-10-18 10:55:15 · 6245 阅读 · 2 评论 -
MATLAB实现平滑处理
一、五点三次平滑法1.函数调用:2.范例:clear all; clc; close all;xx=load('xnoisedata1.txt'); % 读入数据time=xx(:,1); % 时间序列x=xx(:,2); % 带噪数据xmean=mean5_3(x,50); % 调用mean5_3函数,平滑数据% 作图subplot 211; plot(time,x,'k');原创 2020-10-16 20:23:33 · 45818 阅读 · 6 评论 -
MATLAB信号包络的提取
一、使用希尔伯特变换计算信号包络1.函数调用y=hilbert(x)2.范例clear all; clc; close all;n=-5000:20:5000; % 样点设置% 程序第一部分:直接做做希尔伯特变换N=length(n); % 信号样点数nt=0:N-1; % 设置样点序列号x=120+96*exp(-(n/1500).^2).*cos(2*pi*n/600); % 设置信号Hx=h原创 2020-10-16 15:52:46 · 56796 阅读 · 31 评论 -
MATLAB实现寻找信号中的峰值和谷值
一、峰值检测函数1.findpeaks函数(1)函数调用:(2)范例:clear all; clc; close all;y=load('ffpulse.txt'); % 读入脉搏数据x=detrend(y); % 消除趋势项fs=200; % 采样频率N=length(x); % 数据长度time=(0:N-1)/fs; % 时间刻度% 用fin原创 2020-10-15 20:49:29 · 14058 阅读 · 3 评论 -
MATLAB实现消除趋势项
一、函数调用1.消除线性趋势项y=detrend(x)其中x是带有线性趋势项的信号序列,输出参数y是消除趋势项的序列2.消除多项式趋势项(趋势为非线性曲线)[y,xtrend]=polydetrend(x,fs,m)x是带有趋势项的信号,fs是采样频率,m是调用函数时设置的阶次,输出参数y是消除趋势项后的信号序列,xtrend是叠加在信号上的趋势项序列。3.使用sgolay滤波器消除趋势项y = sgolayfilt(x,order,framelen)framelen为帧长。二、范原创 2020-10-14 11:14:17 · 12187 阅读 · 6 评论 -
MATLAB利用Filter Design设计滤波器
一、Filter Design设计滤波器设计带通滤波器,若export选中coefficients,则输出到workspace两个数组,SOS与G。若选中objects,则输出到workspace一个滤波器系数集合Hd。也可生成.mat文件,再进行读取load操作。二、从SOS与G中恢复滤波器系数1.函数调用:[B,A]=sos2tf(SOS,G)2.范例:三、从Hd中恢复滤波器系数[B,A]=tf(Hd)...原创 2020-10-13 21:11:21 · 4729 阅读 · 0 评论 -
MATLAB数字滤波器的使用
一、函数调用原创 2020-10-13 20:31:44 · 976 阅读 · 0 评论 -
MATLAB实现全通滤波器
一、定义全通滤波器的应用之一是进行相位补偿或相位均衡。具体说,由于IIR滤波器很难实现线性相位,因此在滤波器后加一个全通滤波器,调节全通滤波器的相位。原创 2020-10-13 20:20:50 · 5733 阅读 · 0 评论 -
MATLAB实现陷波器
一、定义:在信号测量中,有时信号会被一些干扰的正弦信号所淹没,所以要通过一些窄带滤波器把这些正弦信号滤除。窄带滤波器的目的就是构成窄带滤波,原创 2020-10-13 20:20:06 · 5168 阅读 · 0 评论 -
MATLAB直接设计数字滤波器
一、数字滤波器的阶数选择函数1.函数调用:[N,Wn]=buttord(wp,ws,Rp,Rs)不加‘s’就可以直接求出数字滤波器的系数二、在MATLAB中设计数字滤波器系数1.函数调用:[b,a]=butter(N,Wn,'s'); % 求巴特沃斯滤波器系数三、范例(给出的实际频率)现设计一带通滤波器,要求通带频率为1.5~10Hz,阻频率为1和12Hz,Ap=3,As=15,设计巴特沃斯滤波器clear all; clc; close all;load bzsdat原创 2020-10-13 20:18:37 · 2730 阅读 · 0 评论 -
MATLAB模拟滤波器数字化为数字滤波器(本文Wp为模拟角频率,wp为数字角频率)
一、模拟滤波器数字化的含义二、IIR模拟滤波器阶数选择函数(1)函数调用:[N,Wn]=buttord(wp,ws,Rp,Rs,'s')三、IIR模拟滤波器系数确定(1)函数调用[bb,ab]=butter(N,Wn,'s'); % 求巴特沃斯滤波器系数四、将模拟滤波器转换为数字滤波器1.脉冲响应不变法(1)具体步骤:(2)函数调用:(3)脉冲响应不变法造成的混叠失真脉冲响应不变法的最大特点是频率响应的混叠响应,所以脉冲响应不变法只适用于衰减特性很好的低通或带原创 2020-10-13 20:08:18 · 4049 阅读 · 1 评论 -
MATLAB设计模拟FIR滤波器(以巴特沃斯模拟滤波器为例)
一、模拟滤波器的阶数选择函数1.函数调用:[N,Wn]=buttord(wp,ws,Rp,Rs,'s')2.范例:wp=[0.2*pi 0.3*pi]; % 设置通带频率ws=[0.1*pi 0.4*pi]; % 设置阻带频率Rp=1; Rs=20; % 设置波纹系数% 巴特沃斯滤波器设计[N,Wn]=buttord(wp,ws,Rp,Rs,'s'); % 求巴特沃斯滤波器阶数其中N是滤波器最小原创 2020-10-13 17:50:59 · 2889 阅读 · 0 评论 -
MATLAB信号处理——滤波器的设计
一、模拟滤波器的设计函数1.模拟滤波器的阶数选择函数(以巴特沃斯模拟滤波器为例)(1)函数调用:[N,Wn]=buttord(wp,ws,Rp,Rs,'s')(2)例子:wp=[0.2*pi 0.3*pi]; % 设置通带频率ws=[0.1*pi 0.4*pi]; % 设置阻带频率Rp=1; Rs=20; % 设置波纹系数% 巴特沃斯滤波器设计[N,Wn]=buttord(wp,ws,Rp,Rs,原创 2020-10-13 10:23:55 · 659 阅读 · 0 评论 -
MATLAB构造数字陷波器滤除工频信号
1.背景在实际测量的过程中,经常会收到工频信号的干扰,有时干扰还很大,有用信号完全被淹没,所以需要使用陷波器。2.实例本代码要滤除50Hz干扰load('noisyecg.mat'); % 读入信号数据和采样频率x=noisyecg; % 信号为xN=length(x); % 信号长Nt =(0:N-1)./fs; % 时间刻度 fs2=f原创 2020-10-12 16:57:56 · 5110 阅读 · 1 评论 -
MATLAB用差分方程实现滤波器的滤波过程
1.背景在硬件实现中不可能调用MATLAB中的filter函数,只能用差分方程来进行运算,本案例介绍利用差分方程表示滤波过程。2.实例clear all; clc; close all;fs=1600; % 采样频率f0=50; % 基波频率N=400; % 数据长度t=(0:N-1)/fs;原创 2020-10-12 16:24:15 · 5377 阅读 · 0 评论 -
数字信号处理的MATLAB实现——快速傅里叶变换
FFT函数1.调用格式:X=fft(x,N)(1)当x长度大于N时,以x序列的长度做FFT(2)当x长度小于N时,在x后补零至N长再做FFT(3)当没有设置N时,以x序列的长度做FFTIFFT函数1.调用格式x=ifft(X)计算初始相位角与初始幅度1.调用格式(1)计算初始相位角theta=abs(X(k))其中X(k)为第k点的FFT值(2)计算初始幅度A=2*(abs(X(k)))/N其中乘2是因为变换为单边谱,N为FFT点数2.范例clear all; c原创 2020-10-01 16:43:03 · 13065 阅读 · 1 评论