simulink中使用最小二乘法对振动信号去趋势处理

一、最小二乘法原理

由此得到趋势的线性公式。(可在网上搜索更加详细的原理讲解)

二、在simulnk中建立模型并仿真

建立simulink模型:

建立简单的去趋势模块。

导入信号,进行仿真分析:

黄色线条:信号——去趋势处理——离散积分。

蓝色线条:信号——离散积分。

三、MATLAB Function中代码

function y = detrend(u)
    % 确保输入u为行向量
    u = u(:)';  % 强制转换为行向量(无论输入是行或列)

    N = length(u);
    u_reversed = fliplr(u); % 正确反转行向量顺序
    t = 0:N-1;              % 行向量 [0,1,2,...N-1]

    % 计算中间量(确保结果为标量)
    sum_t = sum(t);
    sum_t2 = sum(t.^2);
    sum_y = sum(u_reversed);
    sum_ty = sum(t .* u_reversed); % 行向量点乘 → 标量

    % 计算斜率a和截距b
    denominator = N*sum_t2 - sum_t^2;
    if denominator == 0
        a = 0;
    else
        a = (N*sum_ty - sum_t*sum_y) / denominator;
    end
    b = (sum_y - a*sum_t) / N;

    % 计算当前时刻趋势项并去趋势
    trend = a*(N-1) + b;   % 时间索引为N-1
    y = u_reversed(end) - trend; % 输出标量
end

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值