【问题标题】:How to create a vector with logarithmically decreasing spacing in MATLAB?如何在 MATLAB 中创建间距对数递减的向量?
【发布时间】:2023-02-10 17:14:25
【问题描述】:

我想创建一个时间向量,从 1e-7 到 1e-5 最后具有更高分辨率(更小的间距)。

标准 v = logspace(-7,-5) 创建一个对数向量增加间距。如果我切换ablogspace(-5,-7))的顺序并使用flip(v),间距仍然相同,只是数字的顺序发生了变化。

【问题讨论】:

    标签: matlab vector logarithm


    【解决方案1】:

    除了限制和值的数量之外,您还需要指定一个附加参数:对数的底数。这相当于选择对数曲线上的值进行采样的位置。

    此代码在您的两个限制之间生成一系列对数递减的值:

    lims = [1e-7,1e-5];
    N = 10;
    e = 10; % we'll generate linear values from 1 to e
    
    % Generate logarithmic sequence (we need to flip for decreasing intervals)
    d = flip(exp(linspace(1, e, N)));
    
    % Map the sequence to our limits
    d = (d - d(1)) / (d(end) - d(1));
    d = d * (lims(2) - lims(1)) + lims(1);
    

    d 是:

       1.0e-05 *
    
        0.0100    0.6359    0.8661    0.9508    0.9820    0.9935    0.9977    0.9992    0.9998    1.0000
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-25
      • 1970-01-01
      相关资源
      最近更新 更多