【算法】语音信号的频谱分析matlab实现

clear
close all;
%设置系统参数%
f1=1e6; %设置波形频率
f2=500e3;
f3=800e3;
Fs=20e6; %设置采样频率 语音信号时应为fs0
L=1024; %数据长度 语音信号时应为s的数据长度
N=14; %数据位宽 可任意设置
%产生输入信号%
t=0:1/Fs:(1/Fs)(L-1);
s=sin(2
pif1t); % %[s,fs0] = audioread(‘sin_2500.wav’);
s=awgn(s,10,‘measured’);
%Fs = 128;% 采样频率
T = 1/Fs;% 采样时间
plot(t,s)
title(‘加噪声的信号’)
xlabel(‘时间(s)’)
N = 2^nextpow2(L); %采样点数,采样点数越大,分辨的频率越精确,N>=L,超出的部分信号补为0
Y = fft(s,N)/N2;%除以N乘以2才是真实幅值,N越大,幅值精度越高
f = Fs/N
(0:1:N-1); %频率
A = abs(Y);%幅值
P = angle(Y);%相值
figure;
subplot(211);plot(f(1:N/2),A(1:N/2));%函数fft返回值的数据结构具有对称性,因此我们只取前一半
title(‘幅值频谱’)
xlabel(‘频率(Hz)’)
ylabel(‘幅值’)
subplot(212);plot(f(1:N/2),P(1:N/2));
title(‘相位谱频’)
xlabel(‘频率(Hz)’)
ylabel(‘相位’)

你可能感兴趣的:(声源定位)