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

无内置函数实现Matlab有限傅里叶级数变换报错求助

修复有限傅里叶级数变换代码的尺寸不匹配问题

问题根源

原代码存在两个核心问题:

  • 错误使用内置函数integral处理离散信号xt:integral要求输入的函数是连续变量的映射,但xt是离散采样点的行向量,和连续变量tau运算时会出现尺寸不匹配。
  • 违反“无内置函数”的需求:integral属于Matlab内置积分函数,不符合题目要求。

修复后的代码

function [xhat, ck] = ffs(xt, t, n, T)
    % 检查输入尺寸是否匹配
    if length(xt) ~= length(t)
        error('xt和t的长度必须一致');
    end
    
    xhat = zeros(size(t));
    ck = zeros(1, 2*n+1);
    dt = t(2) - t(1); % 计算采样间隔
    
    for k = -n:n
        ck_index = k + n + 1;
        % 用离散求和近似积分计算傅里叶系数ck
        exp_term = exp(-1j * 2 * pi * k * t / T);
        ck(ck_index) = (dt / T) * sum(xt .* exp_term);
        
        % 重构信号xhat
        xhat = xhat + ck(ck_index) * exp(1j * 2 * pi * k * t / T);
    end
end

修复说明

  • 离散求和替代连续积分:对于离散采样的信号,傅里叶级数系数的积分可以用采样点的加权求和近似,权重为采样间隔dt,这是数值积分中矩形法的应用,完全适配离散信号的处理逻辑,同时解决了尺寸不匹配问题。
  • 移除内置函数:替换integral为基础的sum运算,满足“无内置函数”的需求。
  • 增加输入检查:添加了xt和t长度一致性的检查,提前捕获输入错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 12:14:56