题目

从包含 1 到 10 整数的向量中,分别提取所有处于奇数下标位置的元素(第1, 3, 5...个)与偶数下标位置的元素(第2, 4, 6...个)。

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

输出格式:分别打印抽样出的奇数位向量与偶数位向量。

数据范围与约定:等差间隔采样。

思路与算法

1. 步长为 2 的切片
奇数位置索引:1:2:end;偶数位置索引:2:2:end。

2. 与数值奇偶性的辨析
切记区分“下标奇偶”与“数值奇偶”。下标位置 v(1:2:end) 针对的是排布顺序,不管元素本身是奇数还是偶数;如果要按数值自身奇偶筛选,则属于逻辑掩码(如 v(mod(v, 2) == 1))。

3. 信号降采样应用
在数字信号处理中,提取奇数位或偶数位就是标准的 2 倍降采样(Downsampling)。

完整程序

% Octave / MATLAB 第16题:奇偶位置元素抽样
v = [15, 23, 38, 41, 56, 62, 79, 84, 91, 105];

odds_pos  = v(1:2:end);  % 下标 1, 3, 5, 7, 9
evens_pos = v(2:2:end);  % 下标 2, 4, 6, 8, 10

fprintf("完整向量: %s\n", mat2str(v));
fprintf("奇数位元素 (1:2:end): %s\n", mat2str(odds_pos));
fprintf("偶数位元素 (2:2:end): %s\n", mat2str(evens_pos));

运行示例

输出:

完整向量: [15 23 38 41 56 62 79 84 91 105]
奇数位元素 (1:2:end): [15 38 56 79 91]
偶数位元素 (2:2:end): [23 41 62 84 105]