iclass.m

来自「各种矩阵相称的算法时间比较」· M 代码 · 共 21 行

M
21
字号
function C=iclass(A,B,n)
%此程序是用分治算法思想将两个规模为2^k*2^k的矩阵相乘
if n==1
    C=A*B;
elseif rem(n,2)==0
    C11=iclass(A(1:n/2,1:n/2),B(1:n/2,1:n/2),n/2)...
        +iclass(A(1:n/2,n/2+1:end),B(n/2+1:end,1:n/2),n/2);
    C12=iclass(A(1:n/2,1:n/2),B(1:n/2,n/2+1:end),n/2)...
        +iclass(A(1:n/2,n/2+1:end),B(n/2+1:end,n/2+1:end),n/2);
    C21=iclass(A(n/2+1:end,1:n/2),B(1:n/2,1:n/2),n/2)...
        +iclass(A(n/2+1:end,n/2+1:end),B(n/2+1:end,1:n/2),n/2);
    C22=iclass(A(n/2+1:end,1:n/2),B(1:n/2,n/2+1:end),n/2)...
        +iclass(A(n/2+1:end,n/2+1:end),B(n/2+1:end,n/2+1:end),n/2);
    C=[C11 C12;C21 C22];
else
    error('Error Cycle!')
end
end


⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?