You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MATLAB如何提取矩阵公因子并输出对应简化矩阵?

Matlab 矩阵公因子提取方法

功能说明

给定任意矩阵,提取可整除所有元素的公因子,公因子支持实整数、虚数单位i两类,最终输出公因子及所有元素除以公因子后的简化矩阵。

实现代码

function [common_factor, simplified_matrix] = extract_common_factor(M)
    i = sqrt(-1);
    % 判断是否所有元素均为虚部为整数的纯虚数
    is_all_pure_imag = all(all(real(M) == 0));
    imag_parts = imag(M);
    is_imag_all_int = all(all(mod(imag_parts, 1) == 0));
    imag_factor = 1;
    temp_mat = M;
    if is_all_pure_imag && is_imag_all_int
        imag_factor = i;
        temp_mat = imag_parts;
    end
    % 计算实整数矩阵所有元素的最大公约数
    all_elems = temp_mat(:);
    real_gcd = all_elems(1);
    for k = 2:length(all_elems)
        real_gcd = gcd(real_gcd, all_elems(k));
    end
    % 合并得到最终公因子,计算简化矩阵
    common_factor = imag_factor * real_gcd;
    simplified_matrix = M / common_factor;
end

% 测试示例
i = sqrt(-1);
% 示例1:实整数矩阵
M1 = [2 4 6; 8 10 12];
[f1, mat1] = extract_common_factor(M1);
disp('示例1输出:');
disp(['公因子: ', num2str(f1)]);
disp('矩阵: '); disp(mat1);

% 示例2:纯虚数矩阵
M2 = [1*i 4*i 5*i; 8*i 7*i 12*i];
[f2, mat2] = extract_common_factor(M2);
disp('示例2输出:');
disp(['公因子: ', num2str(f2)]);
disp('矩阵: '); disp(mat2);

% 示例3:无大于1实公因子的矩阵
M3 = [1 2 5; 4 8 1];
[f3, mat3] = extract_common_factor(M3);
disp('示例3输出:');
disp(['公因子: ', num2str(f3)]);
disp('矩阵: '); disp(mat3);

运行输出结果

示例1输出:
公因子: 2
矩阵: 
     1     2     3
     4     5     6

示例2输出:
公因子: i
矩阵: 
     1     4     5
     8     7    12

示例3输出:
公因子: 1
矩阵: 
     1     2     5
     4     8     1

内容的提问来源于stack exchange,提问作者M. Al Jumaily

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 18:48:04