信号处理示例
这个信号处理该软件包具有用于频域分析、窗口、信号生成和分析等的工具。
入门
虽然可以使用长格式引用包中的任何命令,例如,信号处理:频谱图,通常更容易加载包,然后使用简短的命令名。
重新启动;
带(信号处理):
频谱图、功率谱图和信号图
语音谱图成像
这是一个光谱图男性声音的功率谱和信号图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
持续时间:=evalf(AudioTools:-持续时间(原始语音));
期间≔4.504671202
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(原始语音,点击):
p2:=图:-listplot([seq([i/samplingRate,filteredSpeech[i]],i=1..numelems(originalSpeech))],厚度=0,网格线,轴=方框,颜色=黑色,标题=“过滤语音”,标签=[“时间”,波形],commonPlotOpts2):
数据窗口功能
窗口函数也可以应用于用于生成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],信号处理[功率谱]
下载帮助文档