题目

编写程序,已有向量 A 和 B,先将二者首尾拼接合并为大向量;然后在合并后向量的第 3 个位置与第 4 个位置之间插入新元素 999。

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

输出格式:依次输出原向量 A、B、合并后向量、插入新值后的最终向量。

数据范围与约定:向量结构操作。

思路与算法

1. 首尾拼接
行向量拼接直接使用中括号 [A, B];若是列向量则使用分号 [A; B]。拼接时必须确保对应维度一致,否则触发维度不匹配错误。

2. 任意位置切片插入
Octave 没有原生单值 insert 指令,工程标准做法是利用切片拼合:在第 k 项后插入 x,写成 [v(1:k), x, v(k+1:end)]。

3. 避免在循环中逐项扩容
MATLAB 内部向量为连续内存分配,在超长循环中动态 v(end+1) = x 会引发频繁内存拷贝重分配,效率奇低,应养成块拼接或预分配习惯。

完整程序

% Octave / MATLAB 第17题:向量拼接与插入
A = [1, 2, 3];
B = [4, 5, 6];

% 1. 合并向量
merged = [A, B];
fprintf("合并向量 [A, B]: %s\n", mat2str(merged));

% 2. 在第 3 个位置后插入 999 (即插入到下标 4)
insert_val = 999;
k = 3;
final_vec = [merged(1:k), insert_val, merged(k+1:end)];

fprintf("在第3位后插入999: %s\n", mat2str(final_vec));

运行示例

输出:

合并向量 [A, B]: [1 2 3 4 5 6]
在第3位后插入999: [1 2 3 999 4 5 6]