You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在MATLAB中创建100点移动平均滤波器并与686个数据点卷积后保持同长?

MATLAB实现100点移动平均滤波并保持数据长度一致

步骤1:创建100点移动平均滤波器

移动平均滤波器的核心是对窗口内数据取等权平均,直接生成权重向量即可:

window_size = 100;
ma_filter = ones(1, window_size) / window_size;

ones(1,100)生成长度为100的全1行向量,除以窗口大小后,每个元素权重为1/100,符合移动平均的计算逻辑。

步骤2:卷积时匹配原数据长度(686点)

假设你的原始数据存在变量raw_data中(长度为686),使用conv函数时指定第三个参数为'same',就能让输出滤波数据的长度与输入完全一致:

filtered_data = conv(raw_data, ma_filter, 'same');

'same'参数会自动截取卷积结果的中心段,使其长度等于输入数据的长度,刚好覆盖你的686个数据点需求。

步骤3:绘制原始数据与滤波结果

用plot函数对比展示两者:

plot(raw_data, 'b-', 'DisplayName', '原始数据');
hold on;
plot(filtered_data, 'r-', 'DisplayName', '100点移动平均滤波数据');
legend;
xlabel('数据点索引');
ylabel('数值');
title('原始数据与滤波结果对比');
hold off;

额外注意事项

  • 如果原始数据是列向量,需调整滤波器维度匹配:
    ma_filter = ones(window_size, 1) / window_size; % 列向量滤波器
    filtered_data = conv(raw_data, ma_filter, 'same');
    
  • 若需要无相位延迟的滤波效果,可替换为filtfilt函数(双向卷积),同样支持'same'参数保持长度一致。

内容的提问来源于stack exchange,提问作者May

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 02:03:17