信号处理示例-Maple帮助
为了获得最佳体验,我们建议使用Google Chrome或Microsoft Edge查看联机帮助。

联机帮助

所有产品枫树MapleSim公司


信号处理示例

这个信号处理该软件包具有用于频域分析、窗口、信号生成和分析等的工具。

入门

虽然可以使用长格式引用包中的任何命令,例如,信号处理:频谱图,通常更容易加载包,然后使用简短的命令名。

重新启动;

带(信号处理):

频谱图、功率谱图和信号图

语音谱图成像

这是一个光谱图男性声音的功率谱和信号图MapleSim公司,记录为11 kHz。

maplesim:=文件工具:-JoinPath([kernelopts(datadir),“audio”,“maplesim.wav”]):

光谱图(maplesim,colorscheme=[“zgradient”,[白色,LightSteelBlue,黑色],标记=[0,.5,1]],fftsize=256,includesignal,inclusdepowerspectrum);

小提琴音符的谱图

这是一个光谱图用颤音演奏的小提琴音符,以及功率谱和信号图。请注意,频率振荡为7 kHz及以上,这是典型的振动。

filename:=FileTools:-JoinPath([kernelopts(datadir),“audio”,“ViolinThreePosVibrato.wav”]):

>

颤音:=音频工具:-读取(文件名):

频谱图(可控震源,颜色方案=[“zgradient”,[白色,浅蓝色,红色,黑色],标记=[0,.5,.75,1]],通道=1,fftsize=2^10,包括功率谱,includesignal);

过滤信号

filename2:=文件工具:-JoinPath([kernelopts(datadir),“audio”,“MapleSimMono11025.wav”]):

originalSpeech:=音频工具:-读取(文件名2):

绘图波形和功率谱:

commonPlotOpts2:=标签方向=[水平,垂直],轴=[网格线=[颜色=“钢蓝”]]:

>

samplingRate:=属性(originalSpeech)[1];

采样率11025

(1)

持续时间:=evalf(AudioTools:-持续时间(原始语音));

期间4.504671202

(2)

p1:=图:-listplot([seq([i/samplingRate,originalSpeech[i]],i=1..numelems(Original语音))],厚度=0,网格线,轴=方框,标题=“原始语音”,标签=[“时间(s)”,波形],commonPlotOpts2):

绘图:-显示(p1);

fq:=FFT(原始语音[1..2^15]):

psq:=功率谱(fq):

ps1:=图:-点图([seq([i*samplingRate/2^15,psq[i]],i=1..(1/2)*2^15)],厚度=0,颜色=黑色,网格线,connect=true,title=“原始语音功率谱”,标签=[“频率(Hz)”,功率],视图=[100..2000,0..1.6],轴[1]=[模式=log],commonPlotOpts2):

绘图:-显示(ps1);

应用IIR Butterworth或Chebyshev过滤器:

fc:=800:

taps:=生成ButterworthTaps(9,fc/samplingRate,'filtertype'='lowpass','normalize'=true):

>

filteredSpeech:=无限脉冲响应过滤器(原始语音,抽头):

查看前后功率谱和波形:

FFT过滤语音:=FFT(过滤语音[1..2^15]):

PSfilteredSpeech:=功率谱(FFT过滤语音):

ps2:=图:-pointplot([seq([i*samplingRate/2^15,PSfilteredSpeech[i]],i=1..(1/2)*2^15)],厚度=0,颜色=black,网格线,连接=true,title=“过滤语音的功率谱”,标签=[“频率(Hz)”,功率],视图=[100..2000,0..16],轴[1]=[模式=log],commonPlotOpts2):

plots:-显示(数组(<<ps1,ps2>>));

p2:=绘图:-listplot([seq([i/samplingRate,filteredSpeech[i]],i=1.numelems(originalSpeech))],厚度=0,网格线,轴=方框,颜色=黑色,title=“Filtered Speech”,labels=[“Time(s)”,Waveform],commonPlotOpts2):

绘图:-显示(数组(<<p1,p2>>),视图=[0..持续时间,-1..1]);

应用FIR滤波器

流量:=200:

f高:=700:

taps:=生成有限脉冲响应过滤器taps(50,[流量/采样率,fhigh/samplingRate],过滤器类型=带通):

filteredSpeech:=FinitePulseResponseFilter(原始语音,点击):

查看前后功率谱和波形:

FFT过滤语音:=FFT(过滤语音[1..2^15]):

PSfilteredSpeech:=功率谱(FFT过滤语音):

ps2:=图:-pointplot([seq([i*samplingRate/2^15,PSfilteredSpeech[i]],i=1..(1/2)*2^15)],厚度=0,颜色=black,网格线,连接=true,title=“过滤语音的功率谱”,标签=[“频率(Hz)”,功率],视图=[100..2000,0..16],轴[1]=[模式=log],commonPlotOpts2):

plots:-显示(数组(<<ps1,ps2>>));

p2:=图:-listplot([seq([i/samplingRate,filteredSpeech[i]],i=1..numelems(originalSpeech))],厚度=0,网格线,轴=方框,颜色=黑色,标题=“过滤语音”,标签=[“时间”,波形],commonPlotOpts2):

绘图:-显示(数组(<<p1,p2>>),视图=[0..持续时间,-1..1]);

数据窗口功能

窗口函数也可以应用于用于生成FFT的每个数据窗口。

>

频率:=5:

编号:=2^8:

采样率:=50:

数据:=矢量(N,proc(i)选项运算符,箭头;sin(2*evalf(Pi)*freq*i/samplingRate)+(1/100000000000)*rand()结束进程,数据类型=float[8]):

应用Blackman Nuttall窗口:

dataWindow:=BlackmanNuttallWindow(数据):

光谱图(数据窗口,采样器=采样率,包括功率谱,包括设计值,fftsize=128,colorscheme=[“zgradient”,[钢蓝,浅绿色,红色,黑色],标记=[0,.5,.8,1]]);

使用Explore进行可视化

可以创建使用命令的交互式应用程序信号处理包使用探索命令。要查看使用的另一个示例探索创建有关更多示例,请参见滤波频域噪声应用程序。以下示例动态说明了滤波器参数值对产生的修改信号的影响。

生成已知信号:

A:=信号处理:-GenerateJaehne(5124095):

PA:=图:-listplot(A,'title'=“原始信号”):

接下来,构造一个可重用的容器数组C类为了通过利用无限脉冲响应过滤器命令。

C:=数组(1..512,数据类型=浮点[8]):

F:=过程(频率、滤波器)
使用信号处理;
本地PB,抽头;
抽头:=GenerateButterworthTaps(3,频率,'滤波器类型'=滤波器);
InfiniteImpulseResponseFilter(A,抽头,'container'=C);
PB:=图:-列表图(C,'title'=“过滤信号”);
绘图:-显示(<<PA;PB>>,‘尺寸’=[700400]);
结束进程:

探索(F(频率,滤波器),
参数=[频率=0.05..0.49,
[filter=[“高通”,“低通”]],
placement=左侧,动画,循环,
title=“无限脉冲响应滤波器”);

频率

滤波器

 

 

另请参阅

应用程序/信号生成,应用程序/太阳黑子周期,信号处理,信号处理,信号处理[FinitePulseResponseFilter],信号处理[Generate ButterworthTaps],信号处理[GenerateFinitePulseResponseFilterTaps],信号处理[InfinitePulseResponseFilter],信号处理[功率谱]