MATLAB GUI添加噪声功能实现:时域和频谱图绘制
该函数是一个回调函数,当用户点击GUI界面上的'添加噪声'按钮时,就会触发该函数的执行。该函数的作用是将原始信号加上指定频率的噪声,并在界面上绘制出加噪后的时域图和频谱图。
函数中用到了全局变量x、Fs、tl和x2。其中,x表示原始信号,Fs表示采样率,tl表示时间轴,x2表示处理后的信号。这些变量在GUI界面的其他函数中已经定义并赋值。
首先,从界面上获取用户输入的噪声频率fn,并将其转换为数字类型。然后,根据采样率Fs和信号长度计算出时间轴t,并生成指定频率的噪声信号noise。将噪声信号加到原始信号x上得到处理后的信号,保存到x2中。
接着,将处理后的信号绘制在界面上的第一个坐标轴上,标题为'添加噪声后的时域图',X轴为时间,Y轴为信号幅值。并在界面上的第二个坐标轴上绘制处理后信号的频谱图,标题为'添加噪声后的频谱图',X轴为频率,Y轴为信号幅值。最后,设置坐标轴的范围和网格线,并在界面上显示出来。
代码详细解释
function add_pushbutton3_Callback(hObject, eventdata, handles)
% hObject handle to add_pushbutton3 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global x;
global Fs;
global tl;
global x2;
axes(handles.axes1);
size(x);
t=0:1/Fs:(length(x)-1)/Fs;
Au=0.07;
fn = get(handles.noise_edit2,'string');
fn = str2double(fn);
noise=Au*cos(2*pi*fn*t)';
x=x+noise;
plot(tl,x);
title('添加噪声后的时域图');
xlabel('时间/s');
grid on;
N=length(x);
df=Fs/N;
w=[0:df:df*(N-1)] - Fs/2; %频率分辨率
X=fft(x);
X=fftshift(X);
axes(handles.axes2);
plot(w,abs(X)/max(abs(X)));
axis([-10000,10000,0,1]);
title('添加噪声后的频谱图');
xlabel('频率/Hz');
grid on;
x2=x;
end
原文地址: https://www.cveoy.top/t/topic/nKe9 著作权归作者所有。请勿转载和采集!