题目

给定一个包含 6 个元素的数值向量,分别演示:删除第 2 个位置的单个元素;以及同时删除下标为 [3, 5] 的多个元素。

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

输出格式:分行展示删除操作前后的向量。

数据范围与约定:空矩阵删除语法。

思路与算法

1. 空矩阵赋值
Octave 中删除元素极其优雅:直接将指定索引的目标位置赋值为空矩阵 [],原向量将自动收缩尺寸并前移补齐。

2. 单元素与多元素批量删除
单个删除:v(idx) = [];批量删除:v([i, j, k]) = []。

3. 索引越界防范
在赋空之前必须确保索引在 1 <= idx <= length(v) 范围内,越界会直接抛出 `index out of bounds`。

完整程序

% Octave / MATLAB 第18题:空矩阵删除元素
v = [10, 20, 30, 40, 50, 60];
fprintf("原始向量: %s (长度: %d)\n", mat2str(v), length(v));

% 1. 删除第 2 个元素 (数值 20)
v(2) = [];
fprintf("删除下标2后: %s (长度: %d)\n", mat2str(v), length(v));

% 2. 批量删除当前向量中下标为 3 和 4 的元素
v([3, 4]) = [];
fprintf("删除下标[3,4]后: %s (长度: %d)\n", mat2str(v), length(v));

运行示例

输出:

原始向量: [10 20 30 40 50 60] (长度: 6)
删除下标2后: [10 30 40 50 60] (长度: 5)
删除下标[3,4]后: [10 30 60] (长度: 3)