题目

编写程序,演示两种将一维向量倒序翻转的方法:一种使用步长为 -1 的切片操作 <code>v(end:-1:1)</code>,另一种使用内置函数 <code>fliplr()</code>。

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

输出格式:输出翻转前后的向量对比。

数据范围与约定:行向量与列向量。

思路与算法

1. 切片逆序原理
end:-1:1 构造了一个从长度 N 递减到 1 的整数索引数组,通过下标寻址直接生成倒序向量,效率极高。

2. fliplr 与 flipud
对于行向量,水平翻转用 fliplr()(Flip Left-Right);对于列向量,垂直翻转用 flipud()(Flip Up-Down);现代通用函数可用 flip(v) 自动识别首个非单一维度。

3. 保持原始维度
注意切片逆序不会改变行列属性:行向量倒序仍是行向量。

完整程序

% Octave / MATLAB 第15题:向量逆序翻转
v = [2, 4, 6, 8, 10, 12];

% 方法 1:冒号步长切片法
v_rev1 = v(end:-1:1);

% 方法 2:内置函数水平翻转法
v_rev2 = fliplr(v);

fprintf("原始向量: %s\n", mat2str(v));
fprintf("切片逆序: %s\n", mat2str(v_rev1));
fprintf("fliplr翻转: %s\n", mat2str(v_rev2));

运行示例

输出:

原始向量: [2 4 6 8 10 12]
切片逆序: [12 10 8 6 4 2]
fliplr翻转: [12 10 8 6 4 2]