资源简介
界面显示各个滤波算法的滤波效果,手动拖动“滑块”来模拟波形输入,程序给出波形的滤波输出
代码片段和文件信息
#pragma comment(linker “/subsystem:Windows“)
#include
const long c_width = 700 c_height = 500;
const int max_len = 512;
bool g_mouseDown = false;
int g_value = 0;
int g_buffer[max_len] = { 0 };
double g_filter[max_len] = { 0.0 };
typedef double FILTER_FUNC();
int g_pick_count = 0;
int g_func_index = -1;
FILTER_FUNC *g_filter_func = NULL;
void sort(int buffer[] int count)
{
for (int j = count - 1; j > 0; j--)
{
for (int i = 0; i < j; i++)
{
if (buffer[i] > buffer[i + 1])
{
int temp = buffer[i];
buffer[i] = buffer[i + 1];
buffer[i + 1] = temp;
}
}
}
}
double filter_amplitude_limit() // 1. 限幅滤波法
{
const char A = 13;
if (g_value - g_filter[1] > A || g_filter[1] - g_value > A)
{
return g_filter[1];
}
return g_value;
}
double filter_median_value() // 2. 中位值滤波法
{
const char N = 5;
++g_pick_count;
if (g_pick_count < N)
{
return g_filter[1];
}
g_pick_count = 0;
int buffer[N];
for (int i = 0; i < N; i++)
{
buffer[i] = g_buffer[i];
}
sort (buffer N);
return buffer[N / 2];
}
double filter_arithmetic_average() // 3. 算术平均滤波法
{
const char N = 5;
++g_pick_count;
if (g_pick_count < N)
{
return g_filter[1];
}
g_pick_count = 0;
double sum = 0.0;
for (int i = 0; i < N; i++)
{
sum += g_buffer[i];
}
return sum / N;
}
double filter_recurrence_average() // 4. 递推平均滤波法
{
const char N = 5;
double sum = 0.0;
for (int i = 0; i < N; i++)
{
sum += g_buffer[i];
}
return sum / N;
}
double filter_median_average() // 5. 中位值平均滤波法
{
const char N = 5;
++g_pick_count;
if (g_pick_count < N)
{
return g_filter[1];
}
g_pick_count = 0;
int buffer[N];
for (int i = 0; i < N; i++)
{
buffer[i] = g_buffer[i];
}
sort (buffer N);
double sum = 0.0;
for (int j = 1; j < N - 1; j++)
{
sum += buffer[j];
}
return sum / (N - 2);
}
double filter_limiting_mean() // 6. 限幅平均滤波法
{
const char A = 13;
const char N = 5;
if (g_value - g_filter[1] > A || g_filter[1] - g_value > A)
{
return g_filter[1];
}
static int s_buffer[N];
for (int i = N - 1; i > 0; i--)
{
s_buffer[i] = s_buffer[i - 1];
}
s_buffer[0] = g_value;
++g_pick_count;
if (g_pick_count < N)
{
return g_filter[1];
}
double sum = 0.0;
for (int j = 0; j < N; j++)
{
sum += s_buffer[j];
}
return sum / N;
}
double filter_first_order_lag() // 7. 一阶滞后滤波法
{
const char a = 1 b = 9;
return (g_value * a + g_filter[1] * b) / (a + b);
}
double filter_weighted_average_recursive() // 8. 加权递推平均滤波法
{
const char N = 13;
char coe[N] = {12345678910111213};
char sum_coe = 1+2+3+4+5+6+7+8+9+10+11+12+13;
char i;
double sum=0;
for (i=0;i {
sum += g_buffer[i] * coe[i];
}
return sum / sum_coe;
}
double filter_elimination_buffeting()
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 53248 2011-12-01 09:50 Release\Filter.exe
文件 6804 2011-11-25 16:02 Filter.aps
文件 8855 2011-12-01 09:50 Filter.cpp
文件 207 2011-11-25 09:27 Filter.dep
文件 3530 2011-11-29 17:32 Filter.dsp
文件 518 2011-11-07 17:37 Filter.dsw
文件 6054 2002-02-09 12:17 Filter.ico
文件 4577 2011-11-25 09:27 Filter.mak
文件 58368 2011-12-01 09:50 Filter.ncb
文件 53760 2011-12-01 09:50 Filter.opt
文件 1129 2011-11-10 16:05 Filter.plg
文件 98 2011-11-09 20:27 Filter.rc
目录 0 2011-12-01 09:51 Release
----------- --------- ---------- ----- ----
197148 13
相关资源
- 数字信号-IIR数字滤波器设计
- 微带发夹型带通滤波器设计
- labview滤波器设计
- 卡尔曼滤波算法流程
- 非高斯alpha稳定分布环境中自适应滤波
- STM32使用FIR滤波器的详细过程
- RC带通滤波器pspice仿真电路
- 基于形态学滤波器对心电信号的去噪
- FIR滤波器的verilog代码
- 稀疏自适应Volterra滤波的QRD_RLS算法
- 强跟踪滤波程序强跟踪UKF滤波主程序
- 模型不确定性线性系统的鲁棒故障检
- S7-300滤波程序
- Ansoft 公司滤波器解决方案-滤波器设计
- IDL SG滤波
- QT+opencv图像增强,包括高斯平滑,中
- 基于渐进三角网的机载LiDAR点云数据滤
- 粒子群优化粒子滤波方法
- dsp-fir滤波器的设计汇编程序
- HFSS与腔体滤波器的设计
- cuda实现的中值滤波介绍
- LabVIEW算术平均滤波
- FFT滤波处理
- 抗差卡尔曼滤波
- 基于dsp的FIR低通数字滤波器器设计
- 粒子滤波推导pdf
- 基于DSP_TMS320C5402的FIR数字滤波器设计
- DFT多相滤波器组信道化结构
- TMS320C54x_fir滤波器的实现_dsp_包含源代
- 非局部均值滤波
评论
共有 条评论