资源简介
界面显示各个滤波算法的滤波效果,手动拖动“滑块”来模拟波形输入,程序给出波形的滤波输出

代码片段和文件信息
#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
相关资源
- labview编程软件滤波器以及编写程序设
- 基于Gabor滤波器的图像纹理特征提取
- 图像的小波变换/图像的融合、复原、
- FIR低通滤波器 ccs运行环境
- 液晶电视电路图及解说
- 自适应滤波amp;LMS算法
- 基于labview滤波器的设计
- PLL回路滤波器设计的调整指南
- PLL回路滤波器设计调整指南及使用案
- 锁相环回路滤波器设计优化
- 一种有效的InSAR相位干涉图滤波方法
- 基于GSM接收机的集成多相滤波器设计
- 宽频带数字锁相环的设计及基于FPGA的
- 高手教你如何计算逆变器输出滤波电
- SAPF并网LCL滤波器稳定性
- 基于改进鱼群算法的矿用链式STATCOM装
- 基于梳状滤波器和子群算法的谐波检
- 一种优化的基于i_p-i_q法的谐波电流检
- 一种改进的谐波电流检测方法
- 基于改进自适应谐波检测法的有源电
- LMS自适应滤波器在电力有源滤波器中
- 并联型有源电力滤波器输出电感选择
- 有源电力滤波器在舰船电网谐波补偿
- 有源滤波器的预测电压空间矢量控制
- 有源电力滤波器综述
- 三相四线制有源滤波器的无差拍控制
- LCL滤波器在三相PWM整流器中的应用
- 如何利用RC滤波方法来处理EMC问题
- VSP波场分离的径向中值滤波方法
- 大功率防爆变频器EMI滤波器设计
评论
共有 条评论