《DSP using MATLAB》示例Example 9.7
代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | %% ------------------------------------------------------------------------ %% Output Info about this m-file fprintf ( '\n***********************************************************\n' ); fprintf ( ' <DSP using MATLAB> Exameple 9.7 \n\n' ); time_stamp = datestr ( now , 31); [wkd1, wkd2] = weekday (today, 'long' ); fprintf ( ' Now is %20s, and it is %7s \n\n' , time_stamp, wkd2); %% ------------------------------------------------------------------------ I = 4; L = 5; %n = 0:2048; k1 = 256; k2 = k1+32; m = 0:(k2-k1); %% ----------------------------------------------------------------- %% Plot %% ----------------------------------------------------------------- Hf1 = figure ( 'units' , 'inches' , 'position' , [1, 1, 8, 6], ... 'paperunits' , 'inches' , 'paperposition' , [0, 0, 6, 4], ... 'NumberTitle' , 'off' , 'Name' , 'Exameple 9.7' ); set ( gcf , 'Color' , 'white' ); TF = 10; % (a) Full singal bandwidth: alpha = 1 I L alpha = 1; h = intfilt(I, L, alpha ); fprintf ( '\n The Length of filter is %d \n' , length (h) ); [Hr, w, a, LL] = Hr_Type1(h); Hr_min = min (Hr); w_min = find (Hr == Hr_min); H = abs (freqz(h, 1, w)); Hdb = 20* log10 (H/ max (H)); min_attn = Hdb(w_min); subplot (2, 2, 1); plot (w/ pi , Hr, 'g' , 'linewidth' , 1.0); axis ([0, 1, -1, 5]); grid on; xlabel ( 'frequency in \pi units' ); ylabel ( 'Amplitude' ); title ( 'Amplitude Response:alpha = 1 ' , 'fontsize' , TF); set ( gca , 'xtick' , [0, 1/I, 1]); set ( gca , 'ytick' , [0, I]); subplot (2, 2, 3); plot (w/ pi , Hdb, 'm' , 'linewidth' , 1.0); axis ([0, 1, -50, 10]); grid on; xlabel ( 'frequency in \pi units' , 'fontsize' , 10); ylabel ( 'Decibels' ); title ( ' Log-mag Response : alpha = 1 ' , 'fontsize' , TF); set ( gca , 'xtick' , [0, 1/I, 1]); set ( gca , 'ytick' , [-50, round (min_attn), 0]); % (b) Partial signal bandwidth: alpha = 0.75 I L alpha = 0.75; h = intfilt(I, L, alpha ); fprintf ( '\n The Length of filter is %d \n' , length (h) ); [Hr, w, a, LL] = Hr_Type1(h); Hr_min = max (Hr( end /2: end )); w_min = find (Hr == Hr_min); H = abs (freqz(h, 1, w)); Hdb = 20* log10 (H/ max (H)); min_attn = Hdb(w_min); subplot (2, 2, 2); plot (w/ pi , Hr, 'g' , 'linewidth' , 1.0); axis ([0, 1, -1, 5]); grid on; xlabel ( 'frequency in \pi units ' ); ylabel ( 'Amplitude' ); title ( 'Amplitude Response : alpha = 0.75 ' , 'fontsize' , TF); set ( gca , 'xtick' , [0, 1/I, 1]); set ( gca , 'ytick' , [ 0, I]); subplot (2, 2, 4); plot (w/ pi , Hdb, 'm' , 'linewidth' , 1.0); axis ([0, 1, -50, 10]); grid on; xlabel ( 'frequency in \pi units' ); ylabel ( 'Decibels' ); title ( 'Log-mag Response: alpha = 0.75' , 'fontsize' , TF); set ( gca , 'xtick' , [0, 1/I, 1]); set ( gca , 'ytick' , [-50, round (min_attn), 0]); |
运行结果:
可见,两种α情况下,intfilt函数得到的脉冲响应h长度为2×I×L-1=2×4×5-1=39,即数组h(n)有39个元素。
对于全频带alpha=1的情况,滤波器在通带和阻带都有更多的振荡,最小的阻带衰减是22dB。这是由过渡带很窄造成的。
当alpha=0.75时,滤波器特征是很宽容的,因此它的响应最小阻带衰减34dB。
另外注意到我们没有完全控制其他设计参数。这些细节本节随后会有更详细的讨论。
牢记:
1、如果你决定做某事,那就动手去做;不要受任何人、任何事的干扰。2、这个世界并不完美,但依然值得我们去为之奋斗。
分类:
MATLAB
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· C# 深度学习:对抗生成网络(GAN)训练头像生成模型
· .NET 适配 HarmonyOS 进展
· 用 DeepSeek 给对象做个网站,她一定感动坏了
· DeepSeek+PageAssist实现本地大模型联网
· 手把手教你更优雅的享受 DeepSeek
· 腾讯元宝接入 DeepSeek R1 模型,支持深度思考 + 联网搜索,好用不卡机!
· 从 14 秒到 1 秒:MySQL DDL 性能优化实战