文章目录
matlab代码C程序矩形窗示例:给信号加矩形窗
汉明窗示例:给信号加汉明窗
汉宁窗示例:给信号加汉宁窗
矩形窗
w
(
n
)
=
{
1
0
≤
n
≤
L
−
1
0
其
他
w(n)=\begin{cases}1 \qquad 0 \le n \le L-1\\\\ 0 \qquad 其他\end{cases}
w(n)=⎩⎪⎨⎪⎧10≤n≤L−10其他汉明窗
w
(
n
)
=
{
0.54
−
0.46
c
o
s
[
2
π
n
/
(
L
−
1
)
]
0
≤
n
≤
L
−
1
0
其
他
w(n)=\begin{cases}0.54-0.46cos[2\pi n/(L-1)] \qquad 0 \le n \le L-1 \\\\ 0 \qquad 其他\end{cases}
w(n)=⎩⎪⎨⎪⎧0.54−0.46cos[2πn/(L−1)]0≤n≤L−10其他汉宁窗
w
(
n
)
=
{
0.5
{
1
−
c
o
s
[
2
π
n
/
(
L
−
1
)
]
}
0
≤
n
≤
L
−
1
0
其
他
w(n)=\begin{cases}0.5\{1-cos[2\pi n/(L-1)]\} \qquad 0 \le n \le L-1 \\\\ 0 \qquad 其他\end{cases}
w(n)=⎩⎪⎨⎪⎧0.5{1−cos[2πn/(L−1)]}0≤n≤L−10其他
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
);
}
}