三角窗 matlab,【matlab】矩形窗/三角窗/hanning窗/hamming窗/blackman窗的頻率響應圖

%{---------------------------------------------------------------------------

File:Matlab的窗函數,矩形窗

功能:降低旁瓣水平參數: --------------------------------------------------------------------------- %}%N =51 %==========================================================================%求矩形窗的頻率響應圖 %==========================================================================W = linspace(-pi,pi,4096);wn0 = rectwin(51) %矩形窗函數 %20*log10(abs(WN)) [h1,w0] = freqz(wn0,1,W); %subplotfigure(5,1,1); subplot(511);plot(w0/pi,20*log10(abs(h1/max(h1)))); axis([-1 1 -100 0]); xlabel('歸一化頻率 /\pi'); ylabel('20log_{10}|W(e^{j\omega})| /dB'); title('矩形窗的傅里葉變換'); set(gca,'YTick',[-100 -80 -60 -40 -20 0]) set(gca,'XTick',[-1 :0.2: 1]) %set(gca,'XAxisLocation','top');%設置X軸在上方 %set(gca,'XAxisLocation','buttom');%設置X軸在下方 set(gca,'YAxisLocation','left'); %設置Y軸在左方 text(1,-124,'\pi');%gtext('\pi');%==========================================================================%求三角窗的頻率響應圖 %==========================================================================wn1 = bartlett(51)[h1,w1] = freqz(wn1,1,W); %figure(5,1,2); subplot(512);plot(w1/pi,20*log10(abs(h1/max(h1)))); %plot(w/pi,20*log10(h1/max(h1))); % 警告: 復數 X 和/或 Y 參數的虛部已忽略 axis([-1 1 -100 0]); xlabel('歸一化頻率 /\pi'); ylabel('20log_{10}|W(e^{j\omega})| /dB'); title('三角窗的傅里葉變換'); set(gca,'YTick',[-100 -80 -60 -40 -20 0]) set(gca,'XTick',[-1 :0.2: 1]) %set(gca,'XAxisLocation','top');%設置X軸在上方 set(gca,'YAxisLocation','left'); %設置Y軸在左方 text(1,-124,'\pi');%gtext('\pi');%==========================================================================%hanning 窗的頻率響應圖 %==========================================================================wn2 = hanning(51) [h1,w2] = freqz(wn2,1,W); %figure(5,1,3); subplot(513);plot(w2/pi,20*log10(abs(h1/max(h1)))); axis([-1 1 -100 0]); xlabel('歸一化頻率 /\pi'); ylabel('20log_{10}|W(e^{j\omega})| /dB'); title('Hanning的傅里葉變換');set(gca,'YTick',[-100 -80 -60 -40 -20 0]); set(gca,'XTick',[-1 :0.2: 1]); %set(gca,'XAxisLocation','top');%設置X軸在上方 set(gca,'YAxisLocation','left'); %設置Y軸在左方 text(1,-124,'\pi');%gtext('\pi');%==========================================================================%hamming 窗的頻率響應圖 %==========================================================================wn3 = hamming(51) [h1,w3] = freqz(wn3,1,W); %離散系統頻響特性的函數freqz()%figure(5,1,4); subplot(514);plot(w3/pi,20*log10(abs(h1/max(h1)))); axis([-1 1 -100 0]); xlabel('歸一化頻率 /\pi'); ylabel('20log_{10}|W(e^{j\omega})| /dB'); title('Hamming的傅里葉變換');set(gca,'YTick',[-100 -80 -60 -40 -20 0]) set(gca,'XTick',[-1 :0.2: 1]) %set(gca,'XAxisLocation','top');%設置X軸在上方 set(gca,'YAxisLocation','left'); %設置Y軸在左方 text(1,-124,'\pi');%gtext('\pi');%==========================================================================%Blackman wn1 = blackman(51) %==========================================================================wn4 = blackman(51)[h1,w4] = freqz(wn4,1,W); %figure(5,1,5); subplot(515);plot(w4/pi,20*log10(abs(h1/max(h1)))); axis([-1 1 -100 0]); xlabel('歸一化頻率 /\pi'); ylabel('20log_{10}|W(e^{j\omega})| /dB'); title('Blackman的傅里葉變換'); set(gca,'YTick',[-100 -80 -60 -40 -20 0]) set(gca,'XTick',[-1 :0.2: 1]) %set(gca,'XAxisLocation','top');%設置X軸在上方 set(gca,'YAxisLocation','left'); %設置Y軸在左方 text(1,-124,'\pi');%gtext('\pi');

5a3910de68a3080949e2c8303a5c8eb1.png

Matlab是一种广泛用于数学计算和可视化分析的工具,它常被用于信号处理领域,包括滤波器设计和口函数的应用。矩形、汉明(Hann)和哈纳Hanning)都是常见的函数,它们在数字信号处理中用于减少频谱泄露。 1. **矩形**:矩形是最简单的函数,它的形状是一个从0到1的全为1的矩形,其余部分为0。由于其陡峭的边缘,矩形会带来较大的频谱泄漏(边瓣效应),适用于对频谱分辨率要求不高,或者需要快速计算的情况。 2. **汉明**:汉明(也称为平顶)结合了矩形和平滑结束的特点。它是周期性的,通过交替1和-1实现了平滑的过渡。这可以减少边缘效应,提高频谱的连续性。 3. **哈纳**:哈纳(也称半余弦)是汉明的一种变形,它在函数的一半长度上是线性下降的,另一半长度则是线性上升的。这使得哈纳的频谱泄漏比矩形少,但比汉明略多一些。 在Matlab中,你可以使用`fft()`函数计算信号的离散傅里叶变换(DFT),然后用`plot()`函数绘制频谱图。例如: ```matlab % 假设有一个名为x的模拟信号 window = 'hanning'; % 可以选择'hanning', 'hamming', 或 'rectwin' (矩形) x_windowed = x .* eval(window); % 应用所选的函数 X = fft(x_windowed); f = linspace(0, length(x)/length(X), length(X)); % 频率轴 P = abs(X) ./ length(x); % 计算功率谱密度 plot(f, P); title(['Window Function Spectrogram - ' window]); xlabel('Frequency'); ylabel('Magnitude'); ``` 完成后,你会得到对应于三种函数的频谱图。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值