%%清除变量
clc;% 清屏
clear; % 清除所有变量
close all;% 关闭所有窗口
%% 读取语音信号
format long;
Fs = 1000;
load('matlab.mat', 'wenjian')
t = wenjian(:,1);
x = wenjian(:,2);
figure;
plot(t,x);title('采集的信号');xlabel('时间/\its\rm');ylabel('幅度');
grid on;% 打开网格线
set(gca,'gridlinestyle','--','GridColor','k','Gridalpha',0.2,'LineWidth',1); % 设置网格线的类型,颜色,透明度以及线宽
SIGNAL=x; % 信号
%% 生成真实信号的功率谱
sig_num = length(x);% 傅里叶变换点数
figure;
[sig_glp,f]=periodogram(SIGNAL,[],'centered',sig_num,Fs); % 很多点数的周期图法近似于真实功率谱
% sig_gyh_glp = abs(sig_glp);不对数不归一
sig_gyh_glp = 10*log10(abs(sig_glp));%对数不归一
% sig_gyh_glp = 10*log10(abs(sig_glp)/max(abs(sig_glp))); % 归一化功率谱
plot(f,sig_gyh_glp); % 绘制真实信号功率谱
xlabel('频率/\itH\rm\itz\rm'); % 横轴
ylabel('归一化功率谱/\itd\rm\itB\rm'); % 纵轴
title('真实信号功率谱'); % 标题
% xlim([-100 100])% 横轴限制
% ylim([-50 0]) % 纵轴限制
grid on; % 打开网格线
set(gca,'gridlinestyle','--','GridColor','k','Gridalpha',0.2,'LineWidth',1); % 设置网格线的类型,颜色,透明度以及线宽
%% 周期图法
N=4096;% 周期图法点数
sig_num = 128;% 信号截断点数
sig_jd=SIGNAL(5e3:5e3+sig_num);% 截断信号
Fn=-Fs/2:Fs/N:Fs/2-Fs/N; % 归一化频率范围
figure;
sig_glp_ZQ=periodogram(sig_jd,[],'centered',N,Fs); % 周期图法功率谱
% sig_gyh_glp_ZQ = abs(sig_glp_ZQ);不对数不归一
sig_gyh_glp_ZQ = 10*log10(abs(sig_glp_ZQ));%对数不归一
% sig_gyh_glp_ZQ = 10*log10(abs(sig_glp_ZQ)/max(abs(sig_glp_ZQ)));% 归一化功率谱
plot(Fn,sig_gyh_glp_ZQ,'LineWidth',1); % 绘制周期图法功率谱
xlabel('频率/\itH\rm\itz\rm'); % 横轴
ylabel('归一化功率谱/\itd\rm\itB\rm'); % 纵轴
% xlim([-100 100])% 横轴限制
% ylim([-30 0]) % 纵轴限制
title('周期图法');% 标题
grid on;% 打开网格线
set(gca,'gridlinestyle','--','GridColor','k','Gridalpha',0.2,'LineWidth',1); % 设置网格线的类型,颜色,透明度以及线宽
%% Welch法
sig_num = 128; % 信号截断点数
sig_jd=SIGNAL(5e3:5e3+sig_num);% 截断信号
N=4096; % Welch法点数
Fn=-Fs/2:Fs/N:Fs/2-Fs/N; % 归一化频率范围
chuang_num = 24; % 窗长
cd_num = 12; % 重叠点的数目
figure;
sig_glp_WELCH=pwelch(sig_jd,chuang_num,cd_num,N,Fs,'centered');% Welch方法功率谱
% sig_gyh_glp_WELCH = 10*log10(abs(sig_glp_WELCH)/max(abs(sig_glp_WELCH)));% 归一化功率谱
% sig_gyh_glp_WELCH = abs(sig_glp_WELCH);不对数不归一
sig_gyh_glp_WELCH = 10*log10(abs(sig_glp_WELCH));%对数不归一
plot(Fn,sig_gyh_glp_WELCH,'LineWidth',1); % 绘制Welch方法功率谱
xlabel('频率/\itH\rm\itz\rm'); % 横轴
ylabel('归一化功率谱/\itd\rm\itB\rm');% 纵轴
% xlim([-200 200])% 横轴限制
% ylim([-30 0]) % 纵轴限制
title('\itW\rm\ite\rm\itl\rm\itc\rm\ith\rm\itf\rm法'); % 标题
grid on; % 打开网格线
set(gca,'gridlinestyle','--','GridColor','k','Gridalpha',0.2,'LineWidth',1); % 设置网格线的类型,颜色,透明度以及线宽
%% 保存
save('sig_glp.mat','sig_glp');
save('sig_glp_ZQ.mat','sig_glp_ZQ');
save('sig_glp_WELCH.mat','sig_glp_WELCH');