⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ismagical.m

📁 exm for Experiments with MATLAB (by Cleve Moler in 2008), 这本书是关于MATLAB的教材
💻 M
字号:
function m = ismagical(A)
% ISMAGICAL  Check various magic aspects of square matrices.
% m = ismagical(A) is a logical vector with four elements indicating:
% m(1) = Semimagic: all column sums and all row sums are equal.
% m(2) = Magic:  semimagic and both principal diagonals have the same sum.
% m(3) = Panmagic: magic and all the broken diagonals have the same sum.
% m(4) = Associative: all pairs of elements on oppositve sides of the
%        center have the same sum, which must be twice the center value.

[n,n] = size(A);
mu = (n^3 + n)/2;

semimagic = all(sum(A) == mu) && all(sum(A') == mu);

B = fliplr(A);
magic = semimagic && sum(diag(A)) == mu && sum(diag(B)) == mu;

panmagic = magic;
for d = 1:n
   panmagic = panmagic && ...
              sum([diag(A,d); diag(A,d-n)]) == mu && ...
              sum([diag(B,d); diag(B,d-n)]) == mu;
end

B = flipud(B);
associative = all(all(A+B == n^2+1));

m = [semimagic magic panmagic associative];

⌨️ 快捷键说明

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