题目
编写程序,分别创建包含 3 个元素的行向量与列向量,分别对包含复数元素的行向量执行共轭转置(撇号 ')与非共轭转置(点撇号 .'),并对比输出转置结果与维度变化。
输入格式:无需外部输入。
输出格式:分行展示原行向量、列向量、共轭转置后矩阵、非共轭转置后矩阵以及各自的 size 维度。
数据范围与约定:包含实数与复数元素。
思路与算法
1. 行列向量构造区别
空格或逗号 [1, 2, 3] 分隔同行元素生成行向量(1×3);分号 [1; 2; 3] 分隔跨行元素生成列向量(3×1)。
2. 转置操作符陷阱
单引号 A' 严格执行伴随转置(Hermitian Transpose,即共轭转置:元素虚部变号);如果仅需要单纯改变维度而不反转复数虚部符号,必须使用点单引号 A.'。这是科学计算中极高频的隐蔽 Bug。
3. 维度检测
使用 size(v) 返回 [rows, cols],行向量为 1×N,列向量为 N×1。
完整程序
% Octave / MATLAB 第11题:行列向量与转置陷阱
r_vec = [1, 2, 3]; % 1x3 行向量
c_vec = [4; 5; 6]; % 3x1 列向量
z_vec = [1+2i, 3-4i]; % 包含复数的行向量
fprintf("行向量维度: %dx%d\n", size(r_vec, 1), size(r_vec, 2));
fprintf("列向量维度: %dx%d\n", size(c_vec, 1), size(c_vec, 2));
% 1. 共轭转置 (撇号 '):虚部符号反转
z_herm = z_vec';
fprintf("\n--- 共轭转置 z' (注意虚部符号变号) ---\n");
disp(z_herm);
% 2. 纯转置 (点撇号 .'):仅旋转维度,虚部不变
z_trans = z_vec.';
fprintf("--- 纯转置 z.' (虚部不变) ---\n");
disp(z_trans);运行示例
输出:
行向量维度: 1x3
列向量维度: 3x1
--- 共轭转置 z' (注意虚部符号变号) ---
1 - 2i
3 + 4i
--- 纯转置 z.' (虚部不变) ---
1 + 2i
3 - 4i