【magic是什么意思】a=magic(5)什么意思
答案:2 悬赏:10 手机版
解决时间 2021-02-09 13:06
- 提问者网友:棒棒糖
- 2021-02-08 23:31
【magic是什么意思】a=magic(5)什么意思
最佳答案
- 五星知识达人网友:过活
- 2021-02-09 00:02
【答案】 MATLAB中的?
跟magic函数的算法有关.这算法是这样的:
将三阶魔方的中数5填入正中央,然后其上填1,再按照向前一个数的右上角依次填数2.3.4……
如填到顶端则移至最下
如填到最右则移至最左相应位子
如所填格子已有数则填入该数的下方空格子
你仔细看看是不是这样
magic(1)=1
magic(n)产生代码:
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
跟magic函数的算法有关.这算法是这样的:
将三阶魔方的中数5填入正中央,然后其上填1,再按照向前一个数的右上角依次填数2.3.4……
如填到顶端则移至最下
如填到最右则移至最左相应位子
如所填格子已有数则填入该数的下方空格子
你仔细看看是不是这样
magic(1)=1
magic(n)产生代码:
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楼网友:十鸦
- 2021-02-09 00:35
我明天再问问老师,叫他解释下这个问题
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯