项目场景:

这两天提取一组变压器数据,发现谐波比较严重,我在处理前想只拿到工频信号进行处理。原始数据就这样


问题描述:

杂波比较多。尤其是通道3因为是三相变压器的关系,受到另外两项的干扰更严重。


原因分析:

首先因为我测量的是漏磁通,因为漏磁通的变化受到工频电流的影响,故信号应该是成正弦50HZ变化的。

解决方案:

所以第一步先滤波我使用的是Matlab2020a自带的工具箱设计函数

在命令行窗口输入

filterDesigner

我的设置如下

第一步

选择你要设计滤波器,低通高通带通带阻,这里我就不解释了

这里FIR和IIR两种数字滤波选择

我对这两种方式的简单理解为,IIR是有反馈的他的输出是上一次的输出和这一次输入计算的,

FIR是无反馈的,他是某种函数映射对应关系。选择窗,这是选择窗计算快一点。

详细的区别可以自行查阅资料,这里我也只是用一下。

第二步

这里的设置阶数一般没有要求就最低阶就行,因为自己瞎捣鼓容易让他不收敛。这个缩放通带就默认就可以,其实不是很精确的滤波,这些参数的区别意义不大

这里HZ这里可以选择很多,我选择的就是HZ

FS这里很关键,他是你信号的采样频率的一半。比如我的采样器是10K那我的FS就是5000.如果你是自己设计的函数,就是你计划采样率的一半。计划采样率由你采样的信号的频率决定,理论上是采样信号频率的2倍

工程上采用(2-10)倍。

这里FPASS就是通带

FSTOP就是阻带。

这里就是通带阻带的衰减。

设计完成后我们点击设计滤波器

此时MATLAB会给我们生成频率响应衰减曲线 ,看一下满不满足我们的预期满足的生成函数。

Fs = 5000;  % Sampling FrequencyFpass = 50;              % Passband Frequency
Fstop = 51;              % Stopband Frequency
Dpass = 0.057501127785;  % Passband Ripple
Dstop = 0.0001;          % Stopband Attenuation
flag  = 'scale';         % Sampling Flag% Calculate the order from the parameters using KAISERORD.
[N,Wn,BETA,TYPE] = kaiserord([Fpass Fstop]/(Fs/2), [1 0], [Dstop Dpass]);% Calculate the coefficients using the FIR1 function.
b  = fir1(N, Wn, TYPE, kaiser(N+1, BETA), flag);
Hd = dfilt.dffir(b);

这就是其生成的数据,我们使用的就是这个”Hd“

%   Tip:  If you have the Signal Processing Toolbox, you can design a
%   filter, D, using DESIGNFILT.  Then you can use Y = FILTER(D,X) to
%   filter your data.

根据MATLAB里的提示我们使用工具箱函数设计的滤波器可以直接使用

Y=filter(Hd,X);

我这里x是一行x列。

这就是我的滤波波形

这是我处理后的三相数据,之前是测量量只有两项

中间断点是因为我获取数据的问题,正常情况下应该是正弦波;

处理完成之后采用傅里叶变换提取幅频特性

N = length(data_b1);%求取抽样点数
y3 = fft(data_b1);%对信号进行傅里叶变换
f= (0:round(N/2)-1)*Fs/length(y);%频率显示figure(3);
plot(f,abs(y3(1:round(N/2)))/(N/2));
xlabel('Frequency/ (HZ)');ylabel('Amplitude');
title('信号的频谱');
grid;

幅频特性如下50hz的幅频特性找到了。

完整程序如下

clc
clearrng('default')filepath='C:\Users\zz\Desktop\全部传感器方向一致 - 副本\';%文件夹的路径
char4=[filepath,'*.dat'];
cd (filepath);dat_sum=dir(char4);[hang,lei] = size(dat_sum);data_hang=hang*1600;%     data_shuzu=zeros([data_hang,8]);for i=1:hang  %dat_nub是要读入的文件的个数if i<10   f1=fopen([filepath 'magind000' num2str(i) '.dat']);elseif i>=10&&i<100f1=fopen([filepath 'magind00' num2str(i) '.dat']);elseif i>=100&&i<1000f1=fopen([filepath 'magind0' num2str(i) '.dat']);else f1=fopen([filepath 'magind' num2str(i) '.dat']);endA=fread(f1,[1600,8],'double'); %8个通道,每个通道1600个数据fclose(f1);if i==1data_shuzu=A;elsedata_shuzu=[data_shuzu;A];endenddata_satrt=1;data_add=40000;data_end=data_satrt+data_add;%采样率Mix_Signal_1=data_shuzu(data_satrt:data_end,1)';
Mix_Signal_2=data_shuzu(data_satrt:data_end,3)';
Mix_Signal_3=data_shuzu(data_satrt:data_end,5)';
Mix_Signal_4=data_shuzu(data_satrt:data_end,2)';
Mix_Signal_5=data_shuzu(data_satrt:data_end,4)';
Mix_Signal_6=data_shuzu(data_satrt:data_end,6)';%%  滤波
Fs = 5000;  % Sampling FrequencyFpass = 50;              % Passband Frequency
Fstop = 51;              % Stopband Frequency
Dpass = 0.057501127785;  % Passband Ripple
Dstop = 0.0001;          % Stopband Attenuation
flag  = 'scale';         % Sampling Flag% Calculate the order from the parameters using KAISERORD.
[N,Wn,BETA,TYPE] = kaiserord([Fpass Fstop]/(Fs/2), [1 0], [Dstop Dpass]);% Calculate the coefficients using the FIR1 function.
b  = fir1(N, Wn, TYPE, kaiser(N+1, BETA), flag);
Hd = dfilt.dffir(b);Signal_Filter1=filter(Hd,Mix_Signal_1);Signal_Filter3=filter(Hd,Mix_Signal_3);Signal_Filter2=filter(Hd,Mix_Signal_2);data_s=30262;
data_3t= 2000;
data_e=data_s+data_3t;data_b1=Signal_Filter1(1,data_s:data_e-1)';
%%  FFT%%N = length(data_b1);%求取抽样点数
y3 = fft(data_b1);%对信号进行傅里叶变换
f = 10/N*(0:round(N/2)-1)*1000;%显示实际频点的一半figure(3);
plot(f,abs(y3(1:round(N/2)))/(N/2));
xlabel('Frequency/ (HZ)');ylabel('Amplitude');
title('信号的频谱');
grid;

matlab工具箱使用50hz低通滤波器设计 和FFT 变化截取50hz工频信号幅值相关推荐

  1. 基于MATLAB的数字图像处理的设计与实现 转

    基于MAT [摘要]数字图像处理是一门新兴技术,随着计算机硬件的发展,数字图像的实时处理已经成为可能,由于数字图像处理的各种算法的出现,使得其处理速度越来越快,能更好的为人们服务.数字图像处理是一种通 ...

  2. 双线性变换 matlab,matlab和双线性变换的滤波器设计.doc

    matlab和双线性变换的滤波器设计.doc 武汉理工大学MATLAB课程设计报告书题目MATLAB课程设计基于MATLAB和双线性变换的滤波器设计初始条件MATLAB仿真软件数字信号处理与图像处理基 ...

  3. matlab fft 画出幅值,画包络谱和幅值谱matlab函数示例代码

    使用范例: x=@(t) (1+0.5*cos(9*pi*t)).*cos(200*pi*t+2*cos(10*pi*t))+sin(pi*t).*sin(30*pi*t); t=0:0.01:9.9 ...

  4. 基于matlab测幅值,基于MATLAB的分析测试系统

    基于MATLAB的分析测试系统 来源:华强电子网 作者:华仔 浏览:663 时间:2016-08-10 14:18 标签: 摘要: 摘 要:介绍基于matlab的分析测试系统的结构,详细阐述了系统的工 ...

  5. 画幅值matlab,好用的画包络谱和幅值谱matlab函数

    使用范例: x=@(t) (1+0.5*cos(9*pi*t)).*cos(200*pi*t+2*cos(10*pi*t))+sin(pi*t).*sin(30*pi*t); t=0:0.01:9.9 ...

  6. 频谱分析幅值单位_示波器FFT查看信号频谱和设置的方法

    对信号中的频率分量进行分析是十分重要的,因为他们常常会在设计中引起噪声,一旦超出允许的公差,就可能进而导致器件发生故障功能失常.严重的还可能导致电压尖峰,损坏器件.如果我们在设计的时候没有进行正确的测 ...

  7. 关于MATLAB对已有数据的频谱分析及关心频率的幅值计算

    直接上代码 %% 频谱分析clear clc close all%% 数据导入 % %打开测试数据,多文件处理 % [Fnameh,Pnameh] = uigetfile('*.txt'); % re ...

  8. matlab 幅值,幅值估计和填零 - MATLAB Simulink - MathWorks 中国

    幅值估计和填零 此示例说明如何使用填零来获得正弦信号幅值的精确估计.离散傅里叶变换 (DFT) 中频率的间隔为 Fs/N,其中 Fs 是采样率,N 是输入时序的长度.在尝试估计正弦波幅值时,如果频率无 ...

  9. matlab滤波器设计工具箱带阻滤波器,用matlab信号处理工具箱进行fir滤波器设计的三种方法...

    用matlab信号处理工具箱进行fir滤波器设计的三种方法 摘 要 介绍了利用 MATLAB 信号处理工具箱进行 FIR 滤波器设计的三种方法:程序设计法. FDATool 设计法和 SPTool 设 ...

最新文章

  1. 小程序在canvas上层做图片滚动
  2. 用Transformer实现OCR字符识别!
  3. mac python3.8怎样安装scrapy_Python爬虫与mac下Scrapy配置
  4. Java IO最详解
  5. [算法笔记]二叉树基础
  6. ElasticSearch学习29_基于Elasticsearch实现搜索推荐
  7. 深度学习基础(四)—— RBM(受限波尔滋曼机)
  8. python中a=str(int(a))什么意思_python中a+=a和a=a+a的区别
  9. InnoDB在MySQL默认隔离级别下解决幻读
  10. mcal rtm_RTM的完整形式是什么?
  11. Android音视频编辑器架构图与分析
  12. linux添加终端快捷键,linux 终端快捷键
  13. hp390计算机硬盘模式设置,Bios设置中三种硬盘模式详解
  14. 微纳加工技术_工艺模块_STI 浅槽隔离
  15. QT的triggered意思
  16. python3 最基础
  17. oracle使用小技巧,Oracle在linux下使用小技巧
  18. centos7.4配置nginx php,centos7.4下安装配置PHP服务(源码安装)并配置nginx支持php
  19. Dockerhub最新的toomanyrequests问题
  20. 用计算机弹红莲华教程,原神红莲华琴谱 原神琴谱红莲华怎么弹

热门文章

  1. javascript基础知识总结
  2. 组策略下发URL地址时的问题
  3. git删除中间某个commit
  4. hashmap储存有向图_HashMap的存储结构及原理
  5. TypeScript算法专题 - [双链表1] - 双链的概念及其实现
  6. keil c语言循环嵌套,keil软件中C语言嵌套汇编
  7. python批量删除数据库记录_GitHub - TracyMcgrady6/pymsql_Operation: Python3操作mysql数据库,实现增、批量增、删、改、查...
  8. java bufferedinputstream关闭_Java BufferedInputStream close()用法及代码示例
  9. mysql 5.1.3_1.1.1 MySQL5.5默认存储引擎的调整(3)
  10. Python实现主成分分析(PCA)降维:原理及实例分析