题目
从包含 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]