- 矩形窗
- 漢明窗
- 漢寧窗
matlab代碼
N = 32;
nn = 0 : (N-1);
%==========矩形窗==========
subplot(3,1,1);
w = boxcar(N);
stem(nn, w);
ylabel('幅度');title('矩形窗');
axis([-5 35 0 1.5]);
%==========漢明窗==========
subplot(3,1,2);
w = hamming(N);
stem(nn, w);
ylabel('幅度');title('漢明窗');
axis([-5 35 0 1.5]);
%==========漢寧窗==========
subplot(3,1,3);
w = hanning(N);
stem(nn, w);
ylabel('幅度');title('漢寧窗');
axis([-5 35 0 1.5]);
C程序
矩形窗
#include<stdio.h>
#define N 32
int main()
{
int nn, w = 1;
for(nn = 0; nn < N; nn++)
printf("%d\t%d\n", nn, w);
}
示例:給信號加矩形窗
給信號x=0.5n+10(0 <= n < 32)加矩形窗
#include<stdio.h>
#include<math.h>
#define PI 3.1416
#define N 32
int main()
{
int nn, w = 1;
double result;
for(nn = -20; nn < 50; nn++)
{
if(nn >= 0 && nn < N)
w = 1;
else
w = 0;
result = w * (0.5*nn + 10);
printf("%d\t%f\n", nn, result);
}
}
漢明窗
#include<stdio.h>
#include<math.h>
#define PI 3.1416
#define N 32
int main()
{
int nn;
for(nn = 0; nn < N; nn++)
{
double w = 0.54 - 0.46*cos(2*PI*nn/(N-1));
printf("%d\t%f\n", nn, w);
}
}
示例:給信號加漢明窗
給信號x=0.5n+10(0 <= n < 32)加漢明窗
#include<stdio.h>
#include<math.h>
#define PI 3.1416
#define N 32
int main()
{
int nn;
double w;
double result;
for(nn = -20; nn < 50; nn++)
{
if(nn >= 0 && nn < N)
w = 0.54 - 0.46*cos(2*PI*nn/(N-1));
else
w = 0;
result = w * (0.5*nn + 10);
printf("%d\t%f\n", nn, result);
}
}
漢寧窗
#include<stdio.h>
#include<math.h>
#define PI 3.1416
#define N 32
int main()
{
int nn;
for(nn = 0; nn < N; nn++)
{
double w = 0.5*(1-cos(2*PI*nn/(N-1)));
printf("%d\t%f\n", nn, w);
}
}
示例:給信號加漢寧窗
給信號x=0.5n+10(0 <= n < 32)加漢寧窗
#include<stdio.h>
#include<math.h>
#define PI 3.1416
#define N 32
int main()
{
int nn;
double w;
double result;
for(nn = -20; nn < 50; nn++)
{
if(nn >= 0 && nn < N)
w = 0.5*(1-cos(2*PI*nn/(N-1)));
else
w = 0;
result = w * (0.5*nn + 10);
printf("%d\t%f\n", nn, result);
}
}