题目
编写程序,已有向量 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]