C语言结合gnuplot绘制窗函数

mac2025-07-24  5

文章目录

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)=10nL10汉明窗 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.540.46cos[2πn/(L1)]0nL10汉宁窗 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{1cos[2πn/(L1)]}0nL10

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); } }

最新回复(0)