資源簡介
界面顯示各個濾波算法的濾波效果,手動拖動“滑塊”來模擬波形輸入,程序給出波形的濾波輸出

代碼片段和文件信息
#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? {
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? {
return?g_filter[1];
}
g_pick_count?=?0;
int?buffer[N];
for?(int?i?=?0;?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? {
return?g_filter[1];
}
g_pick_count?=?0;
double?sum?=?0.0;
for?(int?i?=?0;?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? {
sum?+=?g_buffer[i];
}
return?sum?/?N;
}
double?filter_median_average()?//?5.?中位值平均濾波法
{
const?char?N?=?5;
++g_pick_count;
if?(g_pick_count? {
return?g_filter[1];
}
g_pick_count?=?0;
int?buffer[N];
for?(int?i?=?0;?i? {
buffer[i]?=?g_buffer[i];
}
sort?(buffer?N);
double?sum?=?0.0;
for?(int?j?=?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? {
return?g_filter[1];
}
double?sum?=?0.0;
for?(int?j?=?0;?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
評論
共有 條評論