利用DFT分析信号频谱【信号与系统二】

article/2025/8/10 2:18:11

利用DFT分析信号频谱

  • 1. 利用FFT分析信号频谱
  • 2. 产生一个淹没在噪声中的信号x(t),分析信号的频谱
  • 3. 利用有限项分析三角波信号
  • 4. 利用频域分析方法,重新对第一次实验时的含噪信号进行滤波处理
  • 5. 通过频谱分析,识别电话拨号音的电话号码
  • 6. 试着将所给的音阶时域波形和频谱图显示出来
  • 7. 将女生语音变成男生语音,进行频域分析

1. 利用FFT分析信号频谱

在这里插入图片描述
(1) 确定DFT计算的各参数(抽样间隔,截短长度,频谱分辨率等);
(2) 比较理论值与计算值,分析误差原因,提出改善误差的措施。

f_sam=50;t=1/f_sam;tp=4;n=500;
T=0:t:tp;
w=(-n/2:n/2-1)*(2*pi/n)*f_sam;
x=exp(-2*T);
X=t*fftshift(fft(x,n));
y=1./(1i*w+2);
subplot(2,1,1);
plot(T,x);
xlabel('t');title('时域波形');
subplot(2,1,2);
plot(w,abs(X),w,abs(y),"r-.");
axis([-10,10,0,1]);
title('幅度谱');xlabel('w');
legend("计算值","理论值");

在这里插入图片描述

2. 产生一个淹没在噪声中的信号x(t),分析信号的频谱

f1=50;f2=120;f3=360;
T=0:0.0001:0.1;
x=sin(2*pi*f1*T)+sin(2*pi*f2*T);
noise=0.2*sin(2*pi*f3*T);
y=x+noise;
subplot(2,2,1);
plot(T,x);
subplot(2,2,2);
plot(T,y);fsam=240;t=1/fsam;tp=0.1;N=length(x);
T=0:t:tp;
w=(-N/2:N/2-1)*(2*pi/N)*fsam;
X=fftshift(fft(y,N));
subplot(2,2,3);
stem(w,abs(X));
axis([-80,80,0,600]);

在这里插入图片描述

50Hz和120Hz的正弦成分对应的谱峰位置如红圈所示。根据采样定理对原信号进行采样变成离散信号,再用DFT变换得到检测信号的频谱图。

3. 利用有限项分析三角波信号

t= -2:0.001:2;
n=input('请输入N: ');
cn=zeros(1,length(t));  
for i=1:1:n                        % 偶次谐波为零cn=cn+8/(pi*pi)*(-1).^(i-1).*sin((2*i-1)*pi*t)/((2*i-1).^2);
end
plot(t,cn);

在这里插入图片描述

4. 利用频域分析方法,重新对第一次实验时的含噪信号进行滤波处理

[x,fs]=audioread('motherLand.wav');
time=(0:length(x)-1)/fs;
subplot(3,2,1);
plot(time,x);
title('原音频')
xlabel('t/s');fsam=fs;t=1/fsam;tp=10;n=length(x);
T=0:t:tp;
w=(-n/2:n/2-1)*(2*pi/n)*fsam/(2*pi)/1000;
X=fftshift(fft(x));
subplot(3,2,2);
plot(w,abs(X));
title('原音频频谱')
xlabel('f/kHz');
wide=10;
axis([0,wide,0,1800]);f1=80000;
f2=95000;
noise=(0.15*sin(2*pi*f1*time))'+(0.1*sin(2*pi*f2*time))';
y=x+noise;
audiowrite('before.wav',y,fs);
subplot(3,2,3);
plot(time,y);
title('加入噪声后音频')
xlabel('t/s');Y=fftshift(fft(y));
subplot(3,2,4);
plot(w,abs(Y));
title('加入噪声后音频频谱')
xlabel('f/kHz');
axis([0,wide,0,1800]);b=[1.53116389e+03,-1.29990890e-09,7.32176217e+12,-2.03715033e+00,7.71381999e+21];  
a=[1,3.47913978e+04,1.87590501e+09,4.03313474e+13,7.97671668e+17,7.71381999e+21];  
W =linspace(0,14000*2*pi,1000);
H = freqs(b,a,W); 
subplot(3,2,5);
plot(W/(2*pi)/1000,abs(H));
title('滤波器');
xlabel('f/kHz');sys=tf(b,a);
output=lsim(sys,x,time);
audiowrite('after.wav',output,fs);
OUTPUT=fftshift(fft(output));
subplot(3,2,6);
plot(w,abs(OUTPUT));
title('处理后的音频频谱');
xlabel('f/kHz');
axis([0,wide,0,1800]);

在这里插入图片描述

5. 通过频谱分析,识别电话拨号音的电话号码

[x,fs]=audioread('telephone_number.wav');
n=length(x);
time=(0:n-1)/fs;
subplot(6,4,1);
plot(time,x);
title('电话号码音频');xlabel('t/s');
axis([0,6,-0.6,0.6]);
w=(-n/2:n/2-1)*fs/n;
X=fftshift(fft(x));
subplot(6,4,5);
plot(w,abs(X));
axis([0,2500,0,2500]);
title('电话号码频谱');xlabel('f/Hz');num_ts=0;num_te=1.62;
num1_x=x(fs*num_ts+1:fs*num_te);n1=length(num1_x);
num1_t=(0:n1-1)/fs;
subplot(6,4,2);
plot(num1_t,num1_x);
title('第一个数字时域');xlabel('t/s');
w1=(-n1/2:n1/2-1)*fs/n1;
X1=fftshift(fft(num1_x));
subplot(6,4,6);
plot(w1,abs(X1));
axis([0,2500,0,600]);
title('第一个数字频谱');xlabel('f/Hz');num_ts=1.62;num_te=2;
num1_x=x(fs*num_ts+1:fs*num_te);n1=length(num1_x);
num1_t=(0:n1-1)/fs;
subplot(6,4,3);
plot(num1_t,num1_x);
title('第二个数字时域');xlabel('t/s');
w1=(-n1/2:n1/2-1)*fs/n1;
X1=fftshift(fft(num1_x));
subplot(6,4,7);
plot(w1,abs(X1));
axis([0,2500,0,600]);
title('第二个数字频谱');xlabel('f/Hz');num_ts=2;num_te=2.6;
num1_x=x(fs*num_ts+1:fs*num_te);n1=length(num1_x);
num1_t=(0:n1-1)/fs;
subplot(6,4,4);
plot(num1_t,num1_x);
title('第三个数字时域');xlabel('t/s');
w1=(-n1/2:n1/2-1)*fs/n1;
X1=fftshift(fft(num1_x));
subplot(6,4,8);
plot(w1,abs(X1));
axis([0,2500,0,600]);
title('第三个数字频谱');xlabel('f/Hz');num_ts=2.6;num_te=2.89;
num1_x=x(fs*num_ts+1:fs*num_te);n1=length(num1_x);
num1_t=(0:n1-1)/fs;
subplot(6,4,9);
plot(num1_t,num1_x);
title('第四个数字时域');xlabel('t/s');
w1=(-n1/2:n1/2-1)*fs/n1;
X1=fftshift(fft(num1_x));
subplot(6,4,13);
plot(w1,abs(X1));
axis([0,2500,0,600]);
title('第四个数字频谱');xlabel('f/Hz');num_ts=2.89;num_te=3.22;
num1_x=x(fs*num_ts+1:fs*num_te);n1=length(num1_x);
num1_t=(0:n1-1)/fs;
subplot(6,4,10);
plot(num1_t,num1_x);
title('第五个数字时域');xlabel('t/s');
w1=(-n1/2:n1/2-1)*fs/n1;
X1=fftshift(fft(num1_x));
subplot(6,4,14);
plot(w1,abs(X1));
axis([0,2500,0,600]);
title('第五个数字频谱');xlabel('f/Hz');num_ts=3.22;num_te=3.73;
num1_x=x(fs*num_ts+1:fs*num_te);n1=length(num1_x);
num1_t=(0:n1-1)/fs;
subplot(6,4,11);
plot(num1_t,num1_x);
title('第六个数字时域');xlabel('t/s');
w1=(-n1/2:n1/2-1)*fs/n1;
X1=fftshift(fft(num1_x));
subplot(6,4,15);
plot(w1,abs(X1));
axis([0,2500,0,600]);
title('第六个数字频谱');xlabel('f/Hz');num_ts=3.73;num_te=4.13;
num1_x=x(fs*num_ts+1:fs*num_te);n1=length(num1_x);
num1_t=(0:n1-1)/fs;
subplot(6,4,12);
plot(num1_t,num1_x);
title('第七个数字时域');xlabel('t/s');
w1=(-n1/2:n1/2-1)*fs/n1;
X1=fftshift(fft(num1_x));
subplot(6,4,16);
plot(w1,abs(X1));
axis([0,2500,0,600]);
title('第七个数字频谱');xlabel('f/Hz');num_ts=4.13;num_te=4.46;
num1_x=x(fs*num_ts+1:fs*num_te);n1=length(num1_x);
num1_t=(0:n1-1)/fs;
subplot(6,4,17);
plot(num1_t,num1_x);
title('第八个数字时域');xlabel('t/s');
w1=(-n1/2:n1/2-1)*fs/n1;
X1=fftshift(fft(num1_x));
subplot(6,4,21);
plot(w1,abs(X1));
axis([0,2500,0,600]);
title('第八个数字频谱');xlabel('f/Hz');num_ts=4.46;num_te=4.86;
num1_x=x(fs*num_ts+1:fs*num_te);n1=length(num1_x);
num1_t=(0:n1-1)/fs;
subplot(6,4,18);
plot(num1_t,num1_x);
title('第九个数字时域');xlabel('t/s');
w1=(-n1/2:n1/2-1)*fs/n1;
X1=fftshift(fft(num1_x));
subplot(6,4,22);
plot(w1,abs(X1));
axis([0,2500,0,600]);
title('第九个数字频谱');xlabel('f/Hz');num_ts=4.86;num_te=5.5;
num1_x=x(fs*num_ts+1:fs*num_te);n1=length(num1_x);
num1_t=(0:n1-1)/fs;
subplot(6,4,19);
plot(num1_t,num1_x);
title('第十个数字时域');xlabel('t/s');
w1=(-n1/2:n1/2-1)*fs/n1;
X1=fftshift(fft(num1_x));
subplot(6,4,23);
plot(w1,abs(X1));
axis([0,2500,0,600]);
title('第十个数字频谱');xlabel('f/Hz');

在这里插入图片描述
在这里插入图片描述
对照标准频率,我们可以通过频谱分析得出电话号码为:5205201314

6. 试着将所给的音阶时域波形和频谱图显示出来

[x,fs]=audioread('yinjie_Adiao.wav');
n=length(x);
time=(0:n-1)/fs;
subplot(2,1,1);
plot(time,x);
title('时域波形');xlabel('t/s');w=(-n/2:n/2-1)*fs/n;
X=fftshift(fft(x));
subplot(2,1,2);
plot(w,abs(X));
title('频谱图');xlabel('f/Hz');
axis([0,600,0,1200]);

在这里插入图片描述

7. 将女生语音变成男生语音,进行频域分析

[x1,fs1]=audioread('为什么要进行频域分析_男声.wav');
x1=x1(:,1);
n1=length(x1);time1=(0:n1-1)/fs1;
[x2,fs2]=audioread('为什么要进行频域分析_女声.wav');
x2=x2(:,1);
n2=length(x2);time2=(0:n2-1)/fs2;
w1=(-n1/2:n1/2-1)*fs1/n1;
X1=fftshift(fft(x1));
w2=(-n2/2:n2/2-1)*fs2/n2;
X2=fftshift(fft(x2));subplot(2,2,1);
plot(w1,abs(X1));
axis([0,15000,0,800]);
title('男声频谱图');xlabel('f/Hz');
subplot(2,2,2);
plot(w2,abs(X2));
axis([0,15000,0,800]);
title('女声频谱图');xlabel('f/Hz');fs3=fs2*0.85;
w3=(-n2/2:n2/2-1)*fs3/n2;
subplot(2,2,3);
plot(w3,abs(X2));
axis([0,15000,0,800]);
title('女声变男声频谱图');xlabel('f/Hz');audiowrite('女声变男声.wav',x1,fs3);

在这里插入图片描述


http://chatgpt.dhexx.cn/article/wycSZOxs.shtml

相关文章

信号与系统(3)——周期矩形脉冲信号频谱及特点

周期矩形脉冲 如图所示信号为脉冲宽度τ,脉冲幅度A,周期为T的周期矩形脉冲信号。 傅里叶变换推导 上述周期矩形脉冲信号的傅里叶系数推导方式如下: 由此式可得知,该信号频谱谱线大致按照采样函数(Sa(t))…

冲激信号的卷积性质采样信号频谱的周期性延拓

文章目录 1. 冲激信号的卷积2. 性质:3. 仿真验证: 1. 冲激信号的卷积 由冲激信号的卷积性质可知:冲激信号具有显像性。 任何信号对单位冲激函数的卷积等于该信号本身,那么单位冲激函数就相当于是一种“显像”信号,当冲激函数对冲激…

Matlab使用fft画出信号频谱(详细注释)

做雷原作业,需要对信号进行频谱分析,网上一搜太乱了,很多不是我想要的,特此整理。 DSP还没学到fft,就不对fft原理进行详细解释了,直接上代码。 fs500;%采样率 f15;%信号频率 f210;%信号频率 T1;%时宽1s nr…

连续信号频域分析:功率信号的频谱与能量信号频谱密度

频域分析: 周期信号非周期信号频谱(离散)频谱密度(也称频谱,连续)功率谱密度能量谱密度 周期信号and非周期信号幅度谱都是偶函数。 一、功率(周期)信号的频谱 认为周期信号为功率信号、非周期信号为能量 信号 1.1周期信号的虚指数/三角傅里…

FFT_频谱分析(数字信号处理)

~~ 如果有什么问题可以在我的个人博客留言 ,我会及时回复。欢迎来访交流 ~~ FFT_频谱分析(数字信号处理) (一)实验原理 用FFT对信号作频谱分析是学习数字信号处理的重要内容。经常需要进行谱分析的信号是模拟信号和时…

数字信号处理(matlab)——FFT对信号频谱分析

FFT频谱分析法 频谱分辨率D FFT能够实现的频率分辨率是2pi/N 要求2pi/N≤D 误差主要来自于用FFT做频谱分析时,得到的是离散谱,但是信号是连续谱,只有当N较大时,离散谱的包络才能逼近离散谱,因此N要大一些。 为了方便读…

matlab信号频谱分析FFT详解

前言 做OFDM通信少不了频谱分析,基带信号DA后的频谱,以及基带数字上变频后的DA信号都要频谱分析。我觉得其实做任何工程都是这样,先规定实施方案,然后仿真成功,再实际开发,不过也可以一边开发,…

信号与频谱

身为一名通信专业出生的我,居然淡忘了信号的基本知识,今天带大家回顾一下,通俗易懂。 信号(singal)简介 我们在生活中经常遇到信号。比如说,股票的走势图,心跳的脉冲图等等。在通信领域,无论是的GPS、手机…

【信号与系统】笔记(3-2)信号的频谱与傅里叶变换(一图看懂傅里叶变换)

Author:AXYZdong 自动化专业 工科男 有一点思考,有一点想法,有一点理性! 文章目录 一图看懂傅里叶变换前言一、周期信号的频谱1、周期信号频谱的相关概念2、周期信号频谱的特点3、谱线的结构与波形参数的关系 二、非周期信号的频谱…

信号频谱

2019独角兽企业重金招聘Python工程师标准>>> 频谱是指一个时域的信号在频域下的表示方式,可以针对信号进行傅里叶变换而得,所得的结果会是以分别以幅度及相位为纵轴,频率为横轴的两张图,不过有时也会省略相位的信息&am…

晋南讲堂之持久层框架ORM简介

1. 什么是ORM? ORM全称 Object/Relation Mapping,即对象/关系映射,它完成了面向对象语言到关系型数据库的映射,作用是把对持久化对象(POJO,Plain Old Java Object)的保存、修改、删除等操作转换成对数据库的操作,是两者…

持久层框架的比较Hibernate与 MyBatis 胡俊铭

最近网上 看到很多人质疑....现在好多Web项目用了MyBatis,没感觉MyBatis好到哪里了,从开发效率上讲,不管是Hibernate的反向工程,还是自动建表,关联映射都比MyBatis方便得多。难道仅仅是因为运行速度,Hibernate也有缓存啊。或者,二者适用场合不同,再或者,MyBatis就是比…

一起来学SpringBoot(七)持久层框架

springboot具有非常棒的持久层框架支持,下面我将介绍我用过的三种持久层框架进行简述使用。 由于这里操作的都是一张表,这里贴出通用的yml和建表语句 切记这里使用的是mysql8 ,5.8之前的朋友请修改后缀去掉com.mysql.cj.jdbc.Driver 中的cj。…

MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架

MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Obje…

Mysql的持久层_持久层(数据层,Dao层) MyBatis框架

所谓的持久层就是把数据可以永久保持的存储到设备中,不像放到内存中那样断电就消失,一般来说,持久层为直接的理解就是对数据库的各种操作,如CRUD(增加,删除,修改,查询),更新等操作 持久层,就是把持久的动作封装成一个独立的层,这是为了降低功能代码之间的关联.创建一个更清晰的…

Spring 从入门到精通 (二十) 持久层框架 MyBatis

关键词:Spring | 整合 | 持久层 | MyBatis 本专栏通过理论和实践相结合,系统学习框架核心思想及简单原理,原创不易,如果觉得文章对你有帮助,点赞收藏支持博主 ✨ 目录 一、MyBatis开发步骤1.1、创建实体类1.2、实体别名…

持久层框架:Mybatis快速入门

Mybatis/Hibernate/JPA作为持久层使用广泛的框架,在实际的项目中有很多的追随者。这篇文章将会通过简单的实例让完全不知道Mybatis为何物的入门者迅速Catchup,对于有一些Java基础的入门者应该能够很快学会如何使用Mybatis进行CRUD(增查改删&a…

持久层框架JPA与Mybatis该如何选型

一、现状描述 目前java 持久层ORM框架应用最广泛的就是JPA和Mybatis。JPA只是一个ORM框架的规范, 对该规范的实现比较完整就是Spring Data JPA(底层基于Hibernate实现),是基于Spring的数据持久层框架,也就是说它只能用在Spring环…

Java持久层框架之mybatis使用

一.什么是框架,框架从何而来,为什么使用框架? 框架(framework): 1.是一系列jar包,其本质是对JDK功能的拓展.(jar包,jar:class文件的压缩包) 2.框架是一组程序的集合,包含了一系列的最佳实践,作用是解决某一个领域的问题. 最佳实践(Best Practice):实际上是无数程序员经历过无数…

数据持久层框架Mybatis

目录 1.软件开发3层架构 2.什么是框架? 3.传统JDBC开发的不足? 4.什么是Mybatis? 5.Mybatis入门案例? 6.Mybatis增删改查案例? 7.Mybatis代理实现DAO开发? 8.Mybatis高级映射 1.软件开发3层架构 软…