概述
本文给出基于MATLAB对数据进行频域分析的常用方法,具体见代码:
clear all
clc
Fs = 1000; % Sampling frequency HZ
T = 1/Fs; % Sampling period S
N = 2000; % Number of signal
t = (0:N-1)*T; % Time vector
%构造一个信号,其中包含幅值为 0.7 的 50 Hz 正弦量和幅值为 1 的 120 Hz 正弦量
y1 = 0.7*sin(2*pi*50*t) + sin(2*pi*120*t);
%用均值为零、方差为 1 的白噪声叠加该信号
y2 = y1 + randn(size(t));
%波形快速傅里叶运算
Y1 = fft(y1);
Y2 = fft(y2);
%计算双侧频谱P2
P1_2 = abs(Y1/N);
%取出前面一半进行分析
P1_1 = P1_2(1:N/2+1);
%最终转化为单侧幅频
P1_1(2:end-1) = 2*P1_1(2:end-1);
%计算双侧频谱P2
P2_2 = abs(Y2/N);
%取出前面一半进行分析
P2_1 = P2_2(1:N/2+1);
%最终转化为单侧幅频
P2_1(2:end-1) = 2*P2_1(2:end-1);
%确定频域映射,转化为HZ
f = Fs*(0:(N/2))/N;
subplot(4,1,1);
plot(t,y1);
title('原始信号0.7幅值50HZ,1幅值120HZ')
subplot(4,1,2);
plot(f,P1_1);
title('原始信号FFT分析')
subplot(4,1,3);
plot(t,y2);
title('原始信号上叠加0.5的白噪声')
subplot(4,1,4);
plot(f,P2_1);
title('白噪声后FFT')
最后
以上就是开心自行车为你收集整理的matlab语音去除白噪声_MATLAB下使用fft进行频域分析的全部内容,希望文章能够帮你解决matlab语音去除白噪声_MATLAB下使用fft进行频域分析所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复