C语言中值滤波函数

代码解释

  1. 定义宏:使用#define FILTER_TYPE来定义滤波数值的类型,可以轻松改变滤波数值的类型。#define FILTER_SIZE定义滤波数组的大小。
  2. 结构体:定义一个结构体MedianFilter,包含一个固定大小的数组data和当前数据计数count
  3. 初始化函数MedianFilter_init函数用于初始化滤波器,设置计数为0。
  4. 处理函数MedianFilter_process函数处理输入的数值,更新滤波数组,并计算中值。
  5. 主函数:测试代码,初始化滤波器并处理一组数值,输出每次添加新值后的中值。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define FILTER_TYPE int  // 可以通过宏定义改变滤波数值的类型
#define FILTER_SIZE 5    // 定义滤波数组的大小

typedef struct {
    FILTER_TYPE data[FILTER_SIZE];
    size_t count;
} MedianFilter;

void MedianFilter_init(MedianFilter *filter) {
    filter->count = 0;
}

FILTER_TYPE MedianFilter_process(MedianFilter *filter, FILTER_TYPE value) {
    if (filter->count < FILTER_SIZE) {
        filter->data[filter->count++] = value;
    } else {
        memmove(filter->data, filter->data + 1, (FILTER_SIZE - 1) * sizeof(FILTER_TYPE));
        filter->data[FILTER_SIZE - 1] = value;
    }

    FILTER_TYPE sorted[FILTER_SIZE];
    memcpy(sorted, filter->data, filter->count * sizeof(FILTER_TYPE));
    for (size_t i = 0; i < filter->count - 1; ++i) {
        for (size_t j = i + 1; j < filter->count; ++j) {
            if (sorted[i] > sorted[j]) {
                FILTER_TYPE tmp = sorted[i];
                sorted[i] = sorted[j];
                sorted[j] = tmp;
            }
        }
    }
    return sorted[filter->count / 2];
}

int main() {
    MedianFilter filter;
    MedianFilter_init(&filter);

    FILTER_TYPE values[] = {10, 20, 30, 40, 50, 60, 70};
    size_t num_values = sizeof(values) / sizeof(values[0]);

    for (size_t i = 0; i < num_values; ++i) {
        FILTER_TYPE median = MedianFilter_process(&filter, values[i]);
        printf("Added %d, Median: %d\n", values[i], median);
    }

    return 0;
}

相关推荐

  1. C语言滤波函数

    2024-07-21 04:48:02       19 阅读
  2. C语言getchar函数

    2024-07-21 04:48:02       49 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-21 04:48:02       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-21 04:48:02       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-21 04:48:02       45 阅读
  4. Python语言-面向对象

    2024-07-21 04:48:02       55 阅读

热门阅读

  1. 【大模型基础】4.1 数据挖掘(待)

    2024-07-21 04:48:02       21 阅读
  2. 【LeetCode 0231】【位运算】2的N次方

    2024-07-21 04:48:02       16 阅读
  3. 【Socket 编程】基于UDP协议建立多人聊天室

    2024-07-21 04:48:02       16 阅读
  4. 会Excel就会sql?

    2024-07-21 04:48:02       18 阅读
  5. Android笔试面试题AI答之布局Layout(1)

    2024-07-21 04:48:02       12 阅读