用matlab做一个产生魔方阵的程序

尽量简单一些 不规定几*几的魔方阵 高手速度啊 急用
我知道magic函数可以实现 就是要整个代码 系统里的是实现了一个函数过程 能不能有那个用matlab写的那个 主要体现这个思想的代码呢 ?不要求能运行 只要 让我知道是怎么实现的就好了 是怎么样产生出来的就好了 采用的一定高分感谢

这个简单的很啊,你既然知道是magic函数可以实现这功能就好办了。
直接在matlab里输入命令open magic就可以打开magic函数了,里面自然就是代码咯 呵呵
如果你要的是C代码的话推荐你到图书馆看本书《C语言算法速查手册》里面有滴,下面的是MATLAB里的具体函数了
function M = magic(n)
%MAGIC Magic square.
% MAGIC(N) is an N-by-N matrix constructed from the integers
% 1 through N^2 with equal row, column, and diagonal sums.
% Produces valid magic squares for all N > 0 except N = 2.

% Copyright 1984-2002 The MathWorks, Inc.
% $Revision: 5.15 $ $Date: 2002/04/15 03:44:23 $

% Historically, MATLAB's magic was a built-in function.
% This M-file uses a new algorithm to generate the same matrices.

n = floor(real(double(n(1))));

% Odd order.
if mod(n,2) == 1
[J,I] = meshgrid(1:n);
A = mod(I+J-(n+3)/2,n);
B = mod(I+2*J-2,n);
M = n*A + B + 1;

% Doubly even order.
elseif mod(n,4) == 0
[J,I] = meshgrid(1:n);
K = fix(mod(I,4)/2) == fix(mod(J,4)/2);
M = reshape(1:n*n,n,n)';
M(K) = n*n+1 - M(K);

% Singly even order.
else
p = n/2;
M = magic(p);
M = [M M+2*p^2; M+3*p^2 M+p^2];
if n == 2, return, end
i = (1:p)';
k = (n-2)/4;
j = [1:k (n-k+2):n];
M([i; i+p],j) = M([i+p; i],j);
i = k+1;
j = [1 i];
M([i; i+p],j) = M([i+p; i],j);
end
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-04-12
直接调用系统的magic(n)

如果要自己写的话,我记得以前C语言的时候有写过一个。本回答被网友采纳
第2个回答  2010-04-12
在command window输入edit magic就可以,欢迎一起讨论matlab,O(∩_∩)O~
相似回答