【信号去噪】基于FFT和FIR实现信号去噪附matlab代码

简介: 【信号去噪】基于FFT和FIR实现信号去噪附matlab代码

 1 简介

【信号去噪】基于FFT和FIR实现信号去噪附matlab代码

2 部分代码

% Proyek Sinyal dan Sistem - 02% FFT, FIR, and Denoise%   Universitas : Universitas Indonesiafunction varargout = FFT_IvanWidjanarko_1806148706_Sinsis02(varargin)gui_Singleton = 1;gui_State = struct('gui_Name',       mfilename, ...    'gui_Singleton',  gui_Singleton, ...    'gui_OpeningFcn', @FFT_IvanWidjanarko_1806148706_Sinsis02_OpeningFcn, ...    'gui_OutputFcn',  @FFT_IvanWidjanarko_1806148706_Sinsis02_OutputFcn, ...    'gui_LayoutFcn',  [] , ...    'gui_Callback',   []);if nargin && ischar(varargin{1})    gui_State.gui_Callback = str2func(varargin{1});endif nargout    [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});else    gui_mainfcn(gui_State, varargin{:});end% End initialization code - DO NOT EDIT% --- Executes just before FFT_IvanWidjanarko_1806148706_Sinsis02 is made visible.function FFT_IvanWidjanarko_1806148706_Sinsis02_OpeningFcn(hObject, eventdata, handles, varargin)%disable buttonset(handles.ReplayButton,'enable','off');set(handles.FIRFilterButton,'enable','off');set(handles.PlayFIRFilterButton,'enable','off');set(handles.FFTFilterButton,'enable','off');set(handles.PlayFFTFilterButton,'enable','off');set(handles.DenoiseButton,'enable','off');set(handles.PlayDenoiseButton,'enable','off');handles.output = hObject;handles.state = 0;handles.Fs = 8192;handles.lowBound = 300handles.highBound = 3800global nBits;nBits = 16;global recObj;recObj = audiorecorder(handles.Fs,nBits,1);set(recObj,'TimerPeriod',0.05,'TimerFcn',{@audioTimerCallback,handles});xlabel(handles.OriginalTimeDomain,'Time');ylabel(handles.OriginalTimeDomain, 'Amplitude');xlabel(handles.FFTFrequency,'Frequency (Hz)');ylabel(handles.FFTFrequency,'|Y(f)|')xlabel(handles.FIRFrequency,'Frequency (Hz)');ylabel(handles.FIRFrequency,'|Y(f)|')xlabel(handles.DenoiseTimeDomain,'Time');ylabel(handles.DenoiseTimeDomain, 'Amplitude');% Update handles structureguidata(hObject, handles);% --- Outputs from this function are returned to the command line.function varargout = FFT_IvanWidjanarko_1806148706_Sinsis02_OutputFcn(hObject, eventdata, handles)varargout{1} = handles.output;function audioTimerCallback(hObject,event,handles)if(isempty(hObject))    return;endsignal = getaudiodata(hObject);plot(handles.OriginalTimeDomain, signal);% --- Executes on button press in RecordButton.function RecordButton_Callback(hObject, eventdata, handles)%prepare parameterglobal recObj;if handles.state == 0    disp('Start Recording')    set(hObject,'String','Pause');    record(recObj);    handles.state =1 ;        %disable button    set(handles.ReplayButton,'enable','off');    set(handles.FIRFilterButton,'enable','off');    set(handles.PlayFIRFilterButton,'enable','off');    set(handles.FFTFilterButton,'enable','off');    set(handles.PlayFFTFilterButton,'enable','off');    set(handles.DenoiseButton,'enable','off');    set(handles.PlayDenoiseButton,'enable','off');else    disp('Stop Recording')    set(hObject,'String','Record');    stop(recObj);    handles.state = 0;        %enable button    set(handles.ReplayButton,'enable','on');    set(handles.FIRFilterButton,'enable','on');    set(handles.PlayFIRFilterButton,'enable','on');    set(handles.FFTFilterButton,'enable','on');    set(handles.PlayFFTFilterButton,'enable','on');    set(handles.DenoiseButton,'enable','on');    set(handles.PlayDenoiseButton,'enable','on');        xlabel(handles.OriginalTimeDomain,'Time');    ylabel(handles.OriginalTimeDomain, 'Amplitude');    xlabel(handles.FFTFrequency,'Frequency (Hz)');    ylabel(handles.FFTFrequency,'|Y(f)|')endguidata(hObject,handles)% --- Executes on button press in btn_stoprecord.function btn_stoprecord_Callback(hObject, eventdata, handles)disp('Stop Recording')global recordFlag;recordFlag = 0;% --- Executes on button press in ReplayButton.function ReplayButton_Callback(hObject, eventdata, handles)global recObj;global nBits;sig = getaudiodata(recObj);[n m] = size(sig)load gong.mat;soundsc(sig, handles.Fs, nBits);% --- Executes on button press in FFTFilterButton.function FFTFilterButton_Callback(hObject, eventdata, handles)global recObj;sig = getaudiodata(recObj);nfft = 2^nextpow2(length(sig));filterSound = conv(sig,h,'valid');plot(handles.DenoiseTimeDomain, sig);xlabel(handles.DenoiseTimeDomain,'Time');ylabel(handles.DenoiseTimeDomain,'Amplitude')% --- Executes on button press in PlayDenoiseButton.function PlayDenoiseButton_Callback(hObject, eventdata, handles)global filterSoundglobal nBitsload gong.mat;soundsc(filterSound, handles.Fs, nBits);% --- Executes on button press in ExitButton.function ExitButton_Callback(hObject, eventdata, handles)cl = questdlg('Do you want to EXIT?','EXIT',...    'Yes','No','No');switch cl    case 'Yes'        close();        clear all;        return;    case 'No'        quit cancel;end% --- Executes during object creation, after setting all properties.function OriginalTimeDomain_CreateFcn(hObject, eventdata, handles)% hObject    handle to OriginalTimeDomain (see GCBO)% eventdata  reserved - to be defined in a future version of MATLAB% handles    empty - handles not created until after all CreateFcns called% Hint: place code in OpeningFcn to populate OriginalTimeDomain% --- If Enable == 'on', executes on mouse press in5 pixel border.% --- Otherwise, executes on mouse press in 5 pixel border or over ExitButton.function ExitButton_ButtonDownFcn(hObject, eventdata, handles)% hObject    handle to ExitButton (see GCBO)% eventdata  reserved - to be defined in a future version of MATLAB% handles    structure with handles and user data (see GUIDATA)% --- Executes on mouse press over axes background.function OriginalTimeDomain_ButtonDownFcn(hObject, eventdata, handles)% hObject    handle to OriginalTimeDomain (see GCBO)% eventdata  reserved - to be defined in a future version of MATLAB% handles    structure with handles and user data (see GUIDATA)% --- Executes when Project is resized.function Project_SizeChangedFcn(hObject, eventdata, handles)% hObject    handle to Project (see GCBO)% eventdata  reserved - to be defined in a future version of MATLAB% handles    structure with handles and user data (see GUIDATA)

3 仿真结果

image.gif编辑

image.gif编辑

image.gif编辑

4 参考文献

[1]吕晶晶, 赵晶亮, 刘国鹏. 基于MATLAB的振动信号去噪研究[J]. 电子测试, 2011(7):4.

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。

部分理论引用网络文献,若有侵权联系博主删除。

代码

相关文章
|
8天前
|
传感器 算法
ANC主动降噪理论及Matlab代码实现
ANC主动降噪理论及Matlab代码实现
|
17天前
|
存储 算法 计算机视觉
m基于FPGA的FIR低通滤波器实现和FPGA频谱分析,包含testbench和滤波器系数MATLAB计算程序
在Vivado 2019.2平台上开发的系统,展示了数字低通滤波器和频谱分析的FPGA实现。仿真结果显示滤波效果良好,与MATLAB仿真结果一致。设计基于FPGA的FIR滤波器,利用并行处理和流水线技术提高效率。频谱分析通过离散傅里叶变换实现。提供了Verilog核心程序以示例模块工作原理。
17 4
|
1月前
|
数据安全/隐私保护
耐震时程曲线,matlab代码,自定义反应谱与地震波,优化源代码,地震波耐震时程曲线
地震波格式转换、时程转换、峰值调整、规范反应谱、计算反应谱、计算持时、生成人工波、时频域转换、数据滤波、基线校正、Arias截波、傅里叶变换、耐震时程曲线、脉冲波合成与提取、三联反应谱、地震动参数、延性反应谱、地震波缩尺、功率谱密度
|
1月前
|
数据安全/隐私保护
地震波功率谱密度函数、功率谱密度曲线,反应谱转功率谱,matlab代码
地震波格式转换、时程转换、峰值调整、规范反应谱、计算反应谱、计算持时、生成人工波、时频域转换、数据滤波、基线校正、Arias截波、傅里叶变换、耐震时程曲线、脉冲波合成与提取、三联反应谱、地震动参数、延性反应谱、地震波缩尺、功率谱密度
基于混合整数规划的微网储能电池容量规划(matlab代码)
基于混合整数规划的微网储能电池容量规划(matlab代码)
|
1月前
|
算法 调度
含多微网租赁共享储能的配电网博弈优化调度(含matlab代码)
含多微网租赁共享储能的配电网博弈优化调度(含matlab代码)
|
1月前
|
Serverless
基于Logistic函数的负荷需求响应(matlab代码)
基于Logistic函数的负荷需求响应(matlab代码)
|
1月前
|
供应链 算法
基于分布式优化的多产消者非合作博弈能量共享(Matlab代码)
基于分布式优化的多产消者非合作博弈能量共享(Matlab代码)
|
1月前
|
算法 调度
基于多目标粒子群算法冷热电联供综合能源系统运行优化(matlab代码)
基于多目标粒子群算法冷热电联供综合能源系统运行优化(matlab代码)
|
1月前
|
算法 调度 SoC
电动汽车充放电V2G模型(Matlab代码)
电动汽车充放电V2G模型(Matlab代码)