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

如何在Octave中实现30Hz-8000Hz对数扫频的数值映射?

在Octave中实现任意范围对数扫频的时间-频率映射与绘图

核心思路

对数扫频的频率随时间呈指数增长,而非线性变化,你需要用指数公式把0-10s的采样时间映射到30Hz到8000Hz的对数频率范围,公式为:

f(t) = f_start * (f_end / f_start)^(t / t_total)

其中:

  • f_start = 30Hz(起始频率)
  • f_end = 8000Hz(终止频率)
  • t_total = 10s(总扫频时间)
  • t = 单个采样点的时间(0到10s区间内)

具体实现步骤

假设你的采样时间数组为t,振幅数据为amplitude,按以下步骤操作:

  1. 生成对应频率数组
    套用公式计算每个时间点对应的频率,使用点运算符.^确保数组元素级别的指数运算:

    f_start = 30;
    f_end = 8000;
    t_total = 10;
    % 若未生成时间数组,可按振幅数据长度生成等间隔时间:t = linspace(0, 10, length(amplitude));
    f = f_start * (f_end / f_start) .^ (t / t_total);
    
  2. 绘制对数频率轴的振幅图
    直接用semilogx函数绘制对数x轴的图像,操作更简便:

    semilogx(f, amplitude, '-b'); % 蓝色实线绘制曲线
    xlabel('频率 (Hz)');
    ylabel('振幅');
    title('电路对数扫频响应');
    grid on; % 开启网格,便于读取对数刻度
    

    如果已经用plot绘制了线性图,也可以手动修改x轴为对数刻度:

    plot(f, amplitude);
    set(gca, 'XScale', 'log'); % 将当前坐标轴的x轴设置为对数刻度
    

映射正确性验证

可以通过几个关键点确认结果:

  • 当t=0时,f=30Hz,匹配起始频率
  • 当t=10时,f=8000Hz,匹配终止频率
  • 当t=5s时,f=30*(8000/30)^0.5 ≈ 489.9Hz,这是对数刻度的中间点,符合对数扫频的特性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 22:55:03