信号与系统的频域分析专题研讨
【目的】
(1) 加深对信号与系统频域分析基本原理和方法的理解。
(2) 学会利用信号抽样的基本原理对信号抽样过程中出现的一些现象的进行分析。
(3) 通过实验初步了解频谱近似计算过程中产生误差的原因。
(4)学会用调制解调的基本原理对系统进行频域分析。
【研讨题目】
1.信号的抽样
频率为f0 Hz的正弦信号可表示为
按抽样频率fsam=1/T对x(t)抽样可得离散正弦序列x[k]
在下面的实验中,取抽样频率fsam=8kHz。
(1)对频率为2kHz, kHz, kHz和 kHz正弦信号抽样1 秒钟,利用MATLAB函数 sound(x, fsam)播放这四个不同频率的正弦信号。
(2)对频率为 kHz, , kHz和 正弦信号抽样1 秒钟,利用MATLAB函数 sound(x, fsam)播放这四个不同频率的正弦信号。
(3)比较(1)和(2)的实验结果,解释所出现的现象。
【题目分析】
【信号抽样过程中频谱变化的规律】
【比较研究】
连续的播放两段音频信号,比较函数sound和wavplay的异同。
【仿真结果】
【结果的理论分析和解释】
【自主学习内容】
【阅读文献】
【发现问题】 (专题研讨或相关知识点学习中发现的问题):
【问题探究】
【仿真程序】
2. 连续时间信号Fourier变换的数值近似计算
计算连续信号频谱是对信号和系统进行频域分析的基础,由于实际信号大多无简单的解析表达式,所以要用数值方法进行近似计算。本题要求对频谱近似计算中误差的原因进行初步的分析,希望能在计算实际信号频谱的近似计算中起一定的指导作用。
若信号x(t)的非零值在区间,则可用下面提供的函数ctft1或ctft2近似计算其频谱。函数ctft的调用形式为
[X,f]=ctft1(x,fsam,N)
[X,f]=ctft2(x,fsam,N)
其中调用变量x 存放信号x(t)的抽样值,fsam表示对连续信号x(t)的抽样频率(Hz),N表示用DFT进行近似计算时DFT 的点数,为了能高效的进行计算,N最好取2的整数次幂,如512, 1024等。返回变量X是计算出的信号频谱的抽样值,f(单位Hz)表示对应的频率抽样点。返回变量X一般是复数,可用函数abs(X)计算出幅度谱,函数angle(X) 计算出相位谱。傅里叶变换公式表信号与系统
(1)阅读程序ctft2,叙述该程序的基本原理。该程序中有一处需要产生一个大的2维矩阵,指出该行程序,并评价该方法的优缺点。
(2)取抽样频率fsam=100Hz, 信号抽样长度N=1024, 分别用两个子程序近似计算信号的频谱,比较两种方法的计算时间和误差;
(3)若将信号的时域有效宽度定义为
其中表示信号在时域的最大值。试分析时域有效宽度对近似计算的影响。给出一个由信号时域有效宽度估计近似计算中所需信号长度的经验公式。
(4)定义信号频域有效宽度为
其中表示信号在频域的最大值。给出一个由信号频域有效宽度估计近似计算中所需抽样频率的经验公式。
(5)用计算机录分别一段男生和女生的语音信号,计算其频谱并比较其特点。
(6)讨论:计算误差产生的主要原因?如果不知信号的解析表达式,如何分析计算误差?
【题目分析】
由傅里叶变换,对应1/(1+jw),则幅度为1/√(1+W2);arctan(-w)为相位;
信号时域有效宽度估计近似计算中所需信号长度,必须要包含信号的有效宽度,而该信号为单调递减信号,则若X(t1)=Xmax; Xmax = X(t2);=t2-t1;
根据幅度谱的单调性可知,必然对应于两个大于0的频率f1,f2;那么f的范围就是f1:f2;则fs≧2*(f2-f1);
(1):
由题目所给的有ctgt1和ctft2这两个程序的形式:
%近似计算连续信号频谱的函数
Ctft1:
function [X,f]=ctft1(x,Fs,N)
X=fftshift(fft(x,N))/Fs;
f=-Fs/2+(0:N-1)*Fs/N;
ctft2:
function [X,f]=ctft2(x,Fs,N)
tk=(0:N-1)/Fs;% 时域抽样点
dF=Fs/N; %频域抽样间隔
fm=(0:N/2)*dF; %频域抽样点
X=x*exp(-j*2*pi*tk'*fm)/Fs;% 近似计算信号频谱
f=[-fliplr(fm(2:end)) fm]; % 增添负频率点
X=[-conj(fliplr(X(2:end))) X];% 增添频率点对应的频谱
用该程序得到的幅度频谱比较准确跟书上的图相似,但是得到的相位相应存在很大的误差。不如ctft1得到的准确。
(2)
源程序:
%The first function
fsam=100;
p=10;
N=2^p;
b=(N-1)/fsam;
t=0:1/fsam:b;
x=exp(-1*t);
[X1,f1]=ctft1(x,fsam,N);
A1=abs(X1);
F1=angle(X1);
subplot(2,2,1);
plot(f1,A1);
axis([-10,10,0,])
subplot(2,2,2);
plot(f1,F1);
axis([-pi\2,pi\2,-3,3]);
%The second function
[X2,f2]=ctft2(x,fsam,N);
A2=abs(X2);
F2=angle(X2);
subplot(2,2,3);
plot(f2,A2);
axis([-10,10,0,]);
subplot(2,2,4);
plot(f2,F2);
axis([-pi,pi\2,-3,3]);
运行结果:
(3)
(4)
先要各一段男女生的音频,把它以WAV的格式保存在你所编辑程序的文
件夹中,再用wavread()函数把信号载入程序中来运行。
对于女生:
源程序:
fs=8000;
[x,fs,hits]=wavread('C:\Documents and Settings\n\桌面\新建文件夹\女声.wav');
wavplay(x,fs);
N=length(x);
df=fs/N;
n1=1:N/2;
f=[(n1-1)*(2*pi/N)]/pi;
figure(4);
subplot(2,2,1);
plot(x);
title('原始女生信号的时域波形');
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论