MATLAB代做  | MATLAB代写  | MATLAB有偿编程
首 页
当前位置:MATLAB代做|MATLAB代写|MATLAB有偿编程matlab源码信号处理
基于matlab编程几种常见窗函数及其程序实现        [↓跳到下载地址]
官方主页:源码共享网站:www.buycode.cn

联系方式:客服QQ:1747812398 买代码源码软件站,欢迎咨询

运行环境:Win9X/2000/XP/2003/

源码语言:简体中文

源码类型:源码程序 - 信号处理

推荐星级:

更新时间:2015-04-23 00:16:09

源码简介

表1 几种常用的窗函数的比较

名称

特点

应用

矩形窗

Rectangle

矩形窗使用最多,习惯上不加窗就是使信号通过了矩形窗。这种窗的优点是主瓣比较集中,缺点是旁瓣较高,并有负旁瓣,导致变换中带进了高频干扰和泄漏,甚至出现负谱现象。频率识别精度最高,幅值识别精度最低,所以矩形窗不是一个理想的窗。

如果仅要求精确读出主瓣频率,而不考虑幅值精度,则可选用矩形窗,例如测量物体的自振频率等,也可以用在阶次分析中。

汉宁窗

Hanning

又称升余弦窗。主瓣加宽并降低,旁瓣则显著减小,从减小泄漏观点出发,汉宁窗优于矩形窗.但汉宁窗主瓣加宽,相当于分析带宽加宽,频率分辨力下降。它与矩形窗相比,泄漏、波动都减小了,并且选择性也提高。

是很有用的窗函数。如果测试信号有多个频率分量,频谱表现的十分复杂,且测试的目的更多关注频率点而非能量的大小,需要选择汉宁窗。如果被测信号是随机或者未知的,选择汉宁窗。

海明窗

(汉明窗)

Hamming

与汉宁窗都是余弦窗,又称改进的升余弦窗,只是加权系数不同,使旁瓣达到更小。但其旁瓣衰减速度比汉宁窗衰减速度慢。

与汉明窗类似,也是很有用的窗函数。

平顶窗

Flap Top

平顶窗在频域时的表现就象它的名称一样有非常小的通带波动。

由于在幅度上有较小的误差,所以这个窗可以用在校准上。

凯塞窗

Kaiser

定义了一组可调的由零阶贝塞尔Bessel 函数构成的窗函数,通过调整参数β可以在主瓣宽度和旁瓣衰减之间自由选择它们的比重。对于某一长度的Kaiser 窗,给定β,则旁瓣高度也就固定了。

 

布莱克曼窗

Blackman

二阶升余弦窗,主瓣宽,旁瓣比较低,但等效噪声带宽比汉宁窗要大一点,波动却小一点。频率识别精度最低,但幅值识别精度最高,有更好的选择性。

常用来检测两个频率相近幅度不同的信号。

高斯窗

Gaussian

是一种指数窗。主瓣较宽,故而频率分辨力低;无负的旁瓣,第一旁瓣衰减达一55dB。常被用来截短一些非周期信号,如指数衰减信号等。

对于随时间按指数衰减的函数,可采用指数窗来提高信噪比。

三角窗

(费杰窗)

Fejer

是幂窗的一次方形式。与矩形窗比较,主瓣宽约等于矩形窗的两倍,但旁瓣小,而且无负旁瓣。

如果分析窄带信号,且有较强的干扰噪声,则应选用旁瓣幅度小的窗函数,如汉宁窗、三角窗等;

切比雪夫窗(Chebyshev)

在给定旁瓣高度下,Chebyshev窗的主瓣宽度最小,具有等波动性,也就是说,其所有的旁瓣都具有相等的高度。

 

 

下面是几种窗函数归一化DTFT幅度的MATLAB程序:

附上DTFT函数(dtft.m):

function [ X ] = dtft( x,n,w )

%   Computes Discrete-time Fourier Transform

%   [X] = dtft(x,n,w)

%    X = DTFT values computed at w.frequencies

%    x = finite duration sequence over n

%    n = sample position vector

%    w = frequency location vector

X = x*exp(-j*n'*w);

%

end


矩形窗:

%DTFT of a Rectangular Window, M=10,25,50,101

clc; close all;

Hf_1=figure; set(Hf_1,'NumberTitle','off','Name','P0304a');

w=linspace(-pi,pi,501); wtick=[-1:0.5:1]; magtick=[0:0.5:1.1];

% M=10

M=10; n=0:M; x=ones(1,length(n));

X=dtft(x,n,w); magX=abs(X); magX=magX/max(magX);

subplot(2,2,1); plot(w/pi,magX,'LineWidth',1.5); axis([-1 1 0 1.1]);

ylabel('|X|'); title(['M=10']);

set(gca,'XTick',wtick,'YTick',magtick);

% M=25

M=25; n=0:M; x=ones(1,length(n));

X=dtft(x,n,w); magX=abs(X); magX=magX/max(magX);

subplot(2,2,2); plot(w/pi,magX,'LineWidth',1.5); axis([-1 1 0 1.1]);

title(['M=25']); set(gca,'XTick',wtick,'YTick',magtick);

% M=50

M=50; n=0:M; x=ones(1,length(n));

X=dtft(x,n,w); magX=abs(X); magX=magX/max(magX);

subplot(2,2,3); plot(w/pi,magX,'LineWidth',1.5); axis([-1 1 0 1.1]);

xlabel('\omega/\pi'); ylabel('|X|');

title('M=50'); set(gca,'XTick',wtick,'YTick',magtick);

% M=101

M=101; n=0:M; x=ones(1,length(n));

X=dtft(x,n,w); magX=abs(X); magX=magX/max(magX);

subplot(2,2,4); plot(w/pi,magX,'LineWidth',1.5); axis([-1 1 0 1.1]);

xlabel('\omega/\pi'); ylabel('|X|');

title(['M=101']);


 

三角窗:

% Triangular Window:

% DTFT of a Triangular Window,M = 10,25,50,101

clc; close all;

Hf_1=figure; set(Hf_1,'NumberTitle','off','Name','P0304b');

w=linspace(-pi,pi,501); wtick=[-1:0.5:1]; magtick=[0:0.5:1.1];

% M = 10

M=10; n=0:M; x=(1-(abs(M-1-(2*n))/(M+1)));

x=dtft(x,n,w); magX=abs(X); magX=magX/max(magX);

subplot(2,2,1); plot(w/pi,magX,'LineWidth',1.5); axis([-1 1 0 1.1]);

ylabel('|X|'); title(['M = 10']);

set(gca,'XTick',wtick,'YTick',magtick);

% M = 25

M=25; n=0:M; x=(1-(abs(M-1-(2*n))/(M+1)));

X=dtft(x,n,w); magX=abs(X); magX=magX/max(magX);

subplot(2,2,2); plot(w/pi,magX,'LineWidth',1.5); axis([-1 1 0 1.1]);

title(['M = 25']); set(gca,'XTick',wtick,'YTick',magtick);

% M = 50

M=50; n=0:M; x=(1-(abs(M-1-(2*n))/(M+1)));

X=dtft(x,n,w); magX=abs(X); magX=magX/max(magX);

subplot(2,2,3); plot(w/pi,magX,'LineWidth',1.5); axis([-1 1 0 1.1]);

xlabel('\omega/\pi'); ylabel('|X|'); title(['M = 50']);

set(gca,'XTick',wtick,'YTick',magtick);

% M = 100

M=101;n=0:M; x=(1-(abs(M-1-(2*n))/(M+1)));

X=dtft(x,n,w); magX=abs(X); magX=magX/max(magX);

subplot(2,2,4); plot(w/pi,magX,'LineWidth',1.5); axis([-1 1 0 1.1]);

xlabel('\omega/\pi'); title(['M = 101']);

set(gca,'XTick',wtick,'YTick',magtick);


 

海宁窗:

% Hann Window

% DTFT of a Hann Window, M = 10,25,50,101

clc;close all;

Hf_1 = figure; set(Hf_1,'NumberTitle','off','Name','P0304c');

w=linspace(-pi,pi,501); wtick=[-1:0.5:1]; magtick=[0:0.5:1.1];

% M = 10

M=10;n=0:M; x=0.5*(1-cos((2*pi*n)/(M-1)));

X=dtft(x,n,w); magX=abs(X); magX=magX/max(magX);

subplot(2,2,1); plot(w/pi,magX,'LineWidth',1.5); axis([-1 1 0 1.1]);

ylabel('|X|'); title(['M = 10']);

set(gca,'XTick',wtick,'YTick',magtick);

% M = 25

M=25;n=0:M; x=0.5*(1-cos((2*pi*n)/(M-1)));

X=dtft(x,n,w); magX=abs(X); magX=magX/max(magX);

subplot(2,2,2); plot(w/pi,magX,'LineWidth',1.5); axis([-1 1 0 1.1]);

 title(['M = 25']);

set(gca,'XTick',wtick,'YTick',magtick);

% M = 50

M=50;n=0:M; x=0.5*(1-cos((2*pi*n)/(M-1)));

X=dtft(x,n,w); magX=abs(X); magX=magX/max(magX);

subplot(2,2,3); plot(w/pi,magX,'LineWidth',1.5); axis([-1 1 0 1.1]);

xlabel('\omega/\pi'); ylabel('|X|'); title(['M = 50']);

set(gca,'XTick',wtick,'YTick',magtick);

% M = 101

M=101;n=0:M; x=0.5*(1-cos((2*pi*n)/(M-1)));

X=dtft(x,n,w); magX=abs(X); magX=magX/max(magX);

subplot(2,2,4); plot(w/pi,magX,'LineWidth',1.5); axis([-1 1 0 1.1]);

xlabel('\omega/\pi'); title(['M = 101']);

set(gca,'XTick',wtick,'YTick',magtick);


 

哈明窗:

% Hamming Window:

clc; close all;

Hf_1=figure; set(Hf_1,'NumberTitle','off','Name','P0304d');

w=linspace(-pi,pi,501); wtick=[-1:0.5:1]; magtick=[0:0.5:1.1];

% M = 10

M=10; n=0:M; x=(0.54-0.46*cos((2*pi*n)/(M-1)));

X=dtft(x,n,w); magX=abs(X); magX=magX/max(magX);

subplot(2,2,1); plot(w/pi,magX,'LineWidth',1.5); axis([-1 1 0 1.1]);

 ylabel('|X|'); title(['M = 10']);

set(gca,'XTick',wtick,'YTick',magtick);

% M = 25

M=25; n=0:M; x=(0.54-0.46*cos((2*pi*n)/(M-1)));

X=dtft(x,n,w); magX=abs(X); magX=magX/max(magX);

subplot(2,2,2); plot(w/pi,magX,'LineWidth',1.5); axis([-1 1 0 1.1]);

title(['M = 25']);

set(gca,'XTick',wtick,'YTick',magtick);

% M = 50

M=50; n=0:M; x=(0.54-0.46*cos((2*pi*n)/(M-1)));

X=dtft(x,n,w); magX=abs(X); magX=magX/max(magX);

subplot(2,2,3); plot(w/pi,magX,'LineWidth',1.5); axis([-1 1 0 1.1]);

xlabel('\omega/\pi'); ylabel('|X|'); title(['M=50']);

set(gca,'XTick',wtick,'YTick',magtick);

% M = 101

M=101; n=0:M; x=(0.54-0.46*cos((2*pi*n)/(M-1)));

X=dtft(x,n,w); magX=abs(X); magX=magX/max(magX);

subplot(2,2,4); plot(w/pi,magX,'LineWidth',1.5); axis([-1 1 0 1.1]);

xlabel('\omega/\pi');title(['M=101']);

set(gca,'XTick',wtick,'YTick',magtick);


提 示:本站所有源码只提供浏览,需要定制的朋友可以联系在线客服!
注意:价格根据项目的难易程度来定价格业务咨询

基于matlab编程几种常见窗函数及其程序实现 --下载地址

注意:为避免不必要的误会,本站项目里的源码只公开部分需要的联系在线客服

本站长期招聘程序代写高手,欢迎加入华南地区matlab团队

想创业却没有经验的人

无论你是否有过网上开店的经验,都可以随时联系在线客服,建立自己独立的网站
想开网店却不知道如何入手

淘宝创业成本低而且风险小,如果想开淘宝店的朋友可以联系在线客服。
想兼职创业,却不擅长交际与服务的人

在家创业月入5000元。网站程序+百套群发工具+网赚资料+域名+空间+本站终身代理资格,这样你网赚的条件全具备了。每天3小时管理、推广、收钱。
缺乏能快速赢利型产品的人

导入多种最新流行营销软件+网赚教程,让入驻者轻松加盟、复制有效成交技巧、快速赚钱。

源码评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论

浏览说明

* 本站所有源码全部公开,随时随地浏览!
* MATLAB软件如用于商业用途,请购买正版!
* 如果您发现下载链接错误,请点击报告错误谢谢!
* 站内提供的所有软件包含破解及注册码均是由网上搜集,若侵犯了你的版权利益,敬请来信通知我们!
Copyright © 2008-2014 www.buycode.cn. All Rights Reserved.
页面执行时间:234.37500 毫秒