Advertisement

突发信号matlab,MATLAB信号处理仿真

阅读量:

本次,我们将展示另外一个信号分析的有力工具,短时傅里叶变换。

在研究经典信号处理问题时倍感轻松因为我从信号与系统过渡到离散时间信号处理的过程中借助无限时域模型所获得的各种结论完美无缺地展现了理想化的境界然而这种方法也存在一定的局限性尽管DFT与FFT引入了有限采样的时域限制导致频谱泄露但即便如此在提升采样长度以减少泄漏方面仍有一线希望至少我们还有这一途径能够带来一丝温暖而对于那些频率成分保持恒定的信号通过这种方法我们能够在逼近理想状态的同时获得理想的分析结果但对于动态变化的频率成分这种传统方法却陷入了两难境地当采集较长数据进行频域分析虽能精确识别出存在的频率成分但却无法得知其发生的时间位置而若仅采集较短数据则可大致推断出各频率成分出现的时间点但对具体频率值的检测精度会有所下降因此这种情况下傅里叶分析确实像一架天平它的一边越重另一边就会变得很轻不管如何总比一无所获要好得多这就是本次讨论的核心内容即短时傅里叶变换按照奥本海姆所定义这一术语

关于具体的数学推导过程此处不再赘述。此外,在没有数学排版工具的情况下也不方便展示公式。另外,在维基百科英文版的相关描述中也提到了短时傅里叶变换的相关内容,并且其描述较为生动。我们可以定性地简单介绍一下这一概念:假设我们有一个很长的时间信号序列,在其中每隔一定时间窗口抽取一个长度为L的小片段段,并对该片段段施加窗函数后进行DFT分析(即做频谱分析),观察频谱的变化情况。这样就可以得到短时频谱信息这一概念就是短时傅里叶变换的基本思想之一:通过引入时间维度来捕捉信号随时间的变化特性。需要注意的是,在这种情况下需要考虑相邻两次DFT操作之间的关系:两帧数据在原始信号中的相对位置如何?是否允许存在重叠?我们需要思考一下:如果两帧数据完全不重叠的话,则由于加窗操作的原因(通常窗函数在边界处会接近于零值),交界处由于窗函数的影响通常会使得突变被平滑过渡而不是出现突兀变化因此为了更好地捕捉信号中可能存在的突发特性通常建议两帧之间有一定的重叠度而且重叠越多对于捕捉瞬态变化越有利然而这样做的代价则是计算量明显增加

那么可能您会有疑问,在进行短时傅里叶变换时是否有可能通过增加时间窗长度L来实现预期效果?遗憾的是这并非理想方案因为当进行L点离散傅里叶变换后所得到的主要频谱峰实际上反映了整个时间窗内的信号特性因此无法区分这些频谱特征具体出现在哪个时间段内也许有人会思考是否适当增加相邻时间窗之间的重叠度是否有助于提高分析精度然而即使如此所得结果仍然缺乏足够的理论支持以明确分辨出特定频谱成分的时间位置

首先我们观察到了一种DTMF信号的离散双音多频特性。这种声音特征也被称为电话拨号声音。它对应的是特定号码下的拨号音频序列。如果你能够成功解码出我的手机号号码,请务必告知我。请注意,在您的短信中特别注明您是从信号处理博客看到这条信息的,并告知您的博客ID为"duweitao"。请不要将此手机号码公开发布于网站上以避免不必要的麻烦和干扰。

首先观察该拨号音的时域信号,其由多个时域脉冲组成,在脉冲之间出现短暂静默的时间段。整体呈现出完整的波形特征;局部区域进行了放大处理。每个拨号数字均由两个频率分量构成,并且其对应的频率分量具有独特的组合方式。

64119035_1.jpg

然后我们对所有时域信号执行DFT运算后观察到频域中有明显的6条频谱线接着你能否指出某条特定频谱线首次出现的时间点或者某条特定频谱线在整个过程中总共出现了多少次?

64119035_2.jpg

基于256点的短时离散傅里叶变换(DFT)执行分析;通过光谱图(spectrogram)来观察分析结果;能够在时间轴上清晰辨识各段不连续的声音特征;相应地,在频域中各声音特征中心位置的表现则较为模糊。

64119035_3.jpg

然后,在分析中清晰地定位到了频率中心的位置。然而,在实际情况中这些间隙确实存在。但是,请注意到了有些音调之间本来存在的空隙,在这个光谱图上看不见了。

64119035_4.jpg

所以,在时域与频域之间存在着分析能力的权衡关系:若要强化某一侧的表现,则另一侧的能力必然受到负面影响。对于不熟悉'spectrogram'函数的用户来说,请参考Matlab的帮助文档以获得详细指导;如果对此还有疑问,则可参考附图中的光谱图展示形式。该光谱图是从三维频谱图俯视而来,在这种视图下能量越强且距离观察者较近的位置会显示出越明亮的颜色分布

64119035_5.jpg

采用相同的方法,在分析该附件中《白杨礼赞》普通话播音文件时,我们能够观察到相关图表。

首先是语谱图

64119035_6.jpg

然后是3D视图

64119035_7.jpg

从这一角度来看,在人类语言学研究中可以看出

语言无处不在,在我们的日常生活中无时无刻不接触。它不仅用于传递信息与情感交流,在语音分析与合成领域也展现出独特的价值。起初的研究者们便意识到数字信号处理技术的重要性——尽管这一领域的算法日臻完善并已应用于实际场景中,在如此普遍的现象中却隐藏着难以穷尽的秘密。每一个个体的声音特征都是独一无二的——正如每个人都有独特的指纹一样,在犯罪学领域这一特性被称为"声纹"。说实话,在每一次深入研究这些声纹时总能感受到人类语音背后隐藏的巨大智慧——为什么会是这样?我们对此并不了解也无人知晓——也许只有造物主才是真正的明白人吧!

%///

% short time DFT analyse wav file

%///

close all;

clear;

clc;

% set target file at latter line

wav_fname = 'baiyang_test.wav' ;

wav_fname = 'dial_tone.wav' ;

[wav_data, fs, q_bits] = wavread(wav_fname) ;

data_len = length(wav_data) ;

kaiser_beta = 8 ;

stdft_len_win = 256 ;

stdft_len_overlap = stdft_len_win-16 ;

stdft_len_dft = stdft_len_win ;

figure;

subplot(2,1,1);

plot(wav_data); title('Total signal');

subplot(2,1,2);

sect_len = 800;

plot(wav_data(1:sect_len));title('First part');

kaiser_win_spectrum_plot(fs, wav_data, kaiser_beta);

y_min = -160; y_max = 10;

ylim([y_min, y_max]) ; % set y-axis range

title('Input Wave File, Normalized Spectrum', 'fontsize', 14);

dscp_str = sprintf('fs %.2f KHz, L %d, q %d bits, beta %d',...

fs/1E3, data_len, q_bits, kaiser_beta);

text(0.5*(-fs/2),0.8*y_min,dscp_str, ...

'FontSize',14, 'color', 'g','BackgroundColor','k') ;

len_w = stdft_len_win ;

len_o = stdft_len_overlap ;

len_d = stdft_len_dft ;

figure ;

% use tic toc get running time

tic ;

spectrogram(wav_data, len_w, len_o, len_d, fs);

title('Spectrogram', 'fontsize', 14);

toc ;

text_x = 0.7*(fs/2);

text_y = 0.5* (data_len/fs);

dscp_str = sprintf(' data len %d \n win len %d\n overlap %d\n dft len %d',...

data_len, len_w, len_o, len_d);

text(text_x, text_y,dscp_str, ...

'FontSize',14, 'color', 'g','BackgroundColor','k') ;

colormap('jet');

% plot 3d-mesh

S = spectrogram(wav_data, len_w, len_o, len_d, fs);

figure; mesh(log10(1E-4+abs(S))*10);

xlabel('Time', 'FontSize',14);

ylabel('Frequency', 'FontSize',14);

全部评论 (0)

还没有任何评论哟~