题目

在科学计算中,经常需要把区间等分为精确的 N 个采样点。编写程序,使用 <code>linspace(a, b, n)</code> 生成包含端点的等间隔点,并使用 <code>logspace(d1, d2, n)</code> 生成对数等分点。

输入格式:无需外部输入。

输出格式:分行展示生成的线性等分序列与对数等分序列。

数据范围与约定:数值采样。

思路与算法

1. linspace 的工程价值
相比 a:step:b 难以精确控制采样总点数,linspace(a, b, n) 强制在 $[a, b]$ 区间内均匀生成 $n$ 个点,首尾点必定严格吻合 $a$ 与 $b$,步长自动为 $(b-a)/(n-1)$。绘图网格点首选 linspace。

2. logspace 的对数基底
logspace(d1, d2, n) 生成在 $[10^{d1}, 10^{d2}]$ 区间内按对数刻度均匀分布的点。例如 logspace(1, 3, 3) 生成的是 $10^1, 10^2, 10^3$(即 10, 100, 1000)。

3. 频域采样
Bode 图或高频振荡扫频分析时,必须使用对数采样以兼顾低频与高频分辨率。

完整程序

% Octave / MATLAB 第13题:linspace 与 logspace
% 在 [0, 1] 区间生成 5 个均匀采样点
x_lin = linspace(0, 1, 5);

% 在 [10^1, 10^4] 区间生成 4 个对数采样点
x_log = logspace(1, 4, 4);

fprintf("linspace(0, 1, 5) 线性等分点:\n");
disp(x_lin);

fprintf("logspace(1, 4, 4) 对数等分点 (10^1 到 10^4):\n");
disp(x_log);

运行示例

输出:

linspace(0, 1, 5) 线性等分点:
        0   0.2500   0.5000   0.7500   1.0000
logspace(1, 4, 4) 对数等分点 (10^1 到 10^4):
      10     100    1000   10000