用matlab写矩形窗、blackman窗、汉宁窗、汉明窗滤波器
时间: 2023-10-09 19:15:22 浏览: 383
以下是用MATLAB代码实现矩形窗、Blackman窗、汉宁窗、汉明窗滤波器的示例代码:
1. 矩形窗滤波器
```matlab
% 采样频率
fs = 1000;
% 信号频率
f = 50;
% 信号长度
L = 1000;
% 时间序列
t = (0:L-1)/fs;
% 信号
x = sin(2*pi*f*t);
% 矩形窗滤波器
win = rectwin(L);
y = x .* win;
% 画图
figure;
subplot(2,1,1);
plot(t,x);
xlabel('Time (s)');
ylabel('Amplitude');
title('Original Signal');
subplot(2,1,2);
plot(t,y);
xlabel('Time (s)');
ylabel('Amplitude');
title('Rectangular Window Filtered Signal');
```
2. Blackman窗滤波器
```matlab
% 采样频率
fs = 1000;
% 信号频率
f = 50;
% 信号长度
L = 1000;
% 时间序列
t = (0:L-1)/fs;
% 信号
x = sin(2*pi*f*t);
% Blackman窗滤波器
win = blackman(L);
y = x .* win;
% 画图
figure;
subplot(2,1,1);
plot(t,x);
xlabel('Time (s)');
ylabel('Amplitude');
title('Original Signal');
subplot(2,1,2);
plot(t,y);
xlabel('Time (s)');
ylabel('Amplitude');
title('Blackman Window Filtered Signal');
```
3. 汉宁窗滤波器
```matlab
% 采样频率
fs = 1000;
% 信号频率
f = 50;
% 信号长度
L = 1000;
% 时间序列
t = (0:L-1)/fs;
% 信号
x = sin(2*pi*f*t);
% 汉宁窗滤波器
win = hann(L);
y = x .* win;
% 画图
figure;
subplot(2,1,1);
plot(t,x);
xlabel('Time (s)');
ylabel('Amplitude');
title('Original Signal');
subplot(2,1,2);
plot(t,y);
xlabel('Time (s)');
ylabel('Amplitude');
title('Hanning Window Filtered Signal');
```
4. 汉明窗滤波器
```matlab
% 采样频率
fs = 1000;
% 信号频率
f = 50;
% 信号长度
L = 1000;
% 时间序列
t = (0:L-1)/fs;
% 信号
x = sin(2*pi*f*t);
% 汉明窗滤波器
win = hamming(L);
y = x .* win;
% 画图
figure;
subplot(2,1,1);
plot(t,x);
xlabel('Time (s)');
ylabel('Amplitude');
title('Original Signal');
subplot(2,1,2);
plot(t,y);
xlabel('Time (s)');
ylabel('Amplitude');
title('Hamming Window Filtered Signal');
```
这些代码可以直接复制到MATLAB命令行中运行,也可以保存为.m文件在MATLAB中直接运行。其中,变量fs表示采样频率,f表示信号频率,L表示信号长度,t是时间序列,x是原始信号,win是窗函数,y是滤波后的信号。在画图时,subplot(2,1,1)表示将画布分为两行一列,第一个图画在第一行,第二个图画在第二行。xlabel、ylabel和title分别表示横轴标签、纵轴标签和标题。
阅读全文