matlab中magic(',5,')和magic(5)有什么区别啊,急,急,急

供稿:hz-xin.com     日期:2025-01-14
matlab中的magic是什么意思

magic(n)生成一个n阶幻方。

一个n阶幻方,就是把1-n^2排成一个nxn的矩阵,使得矩阵的每行、每列,以及主、副对角线上面的n个数之和都相等(容易证明,这个和等于n*(n^2+1)/2)。

射雕英雄传里面的瑛姑,就在那里摆弄一个三阶幻方,搞了好几年没搞明白,这金大侠把她写的也有点太蠢了。

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(n)函数的输入参数必须为正整数,即使不是整数也会被转换成正整数,例如
>> magic(5.6)

ans =

17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
magic(',5,')相当于magic(44),这是因为该函数把输入的字符串',5,'通过某种机制转换为数值44了,通过验证发现
>>abs(',')%%%求ascii值

ans =

44
显然,magic函数取字符串的第一个字符“,”的ascii码值作为输入参数。
问题到此解决,希望对楼主有所帮助。

matlab中魔术矩阵magic()为何每次得到的都是一个矩阵,同一阶的魔术矩阵...
同一阶的幻方矩阵当然不止一个,但MATLAB是按照固定的算法来生成的,所以你每次调用得到的结果都是相同的。你可以通过以下几种方式来得到幻方矩阵的其它形式:上下翻转(flipud);左右翻转(fliplr);转置(transpose)。可以检验,除用magic函数直接得到的幻方矩阵之外,另外还有7种形式:m=magic(4)flipud...

matlab中magic(',5,')和magic(5)有什么区别啊,急,急,急
>> magic(5.6)ans = 17 24 1 8 15 23 5 7 14 16 4 6 13 20 22 10 12 19 21 3 11 18 25 2 9 magic(',5,')相当于magic(44),这是因为该函数把输入的字符串',5,'通过某种机制转换为数值44了,通过验证发现 >>ab...

在MATLAB中,怎样用命令magic(n)生成幻方矩阵,并通过计算研究它的性质...
>> n=3;%矩阵阶数,可以改为4、5、6……>> m=magic(n);%生成幻方阵 >> sum(m)%各列和 ans = 15 15 15 >> sum(m')%各行和 ans = 15 15 15 >> sum(diag(m))%正对角线 ans = 15 >> sum(diag(m'))%反对角线 ans = 15 ...

matlab中怎么判断一个元素在矩阵中
用ismember >> A = magic(3)A = 8 1 6 3 5 7 4 9 2 >> ismember(6,A)ans = 1

怎样在matlab中进行矩阵的运算?
(2)矩阵乘法假定有两个矩阵A和B,若A为m*n矩阵,B为n*p矩阵,则C=A*B为m*p矩阵。(3)矩阵除法在MATLAB中,有两种矩阵除法运算:\\和\/,分别表示左除和右除。如果A矩阵是非奇异方阵,则A\\B和B\/A运算可以实现。A\\B等效于A的逆左乘B矩阵,也就是inv(A)*B,而B\/A等效于A矩阵的逆右乘B矩阵...

a=magic(5)什么意思
MATLAB中的?跟magic函数的算法有关。这算法是这样的:将三阶魔方的中数5填入正中央,然后其上填1,再按照向前一个数的右上角依次填数2.3.4……如填到顶端则移至最下 如填到最右则移至最左相应位子 如所填格子已有数则填入该数的下方空格子 你仔细看看是不是这样 magic(1)=1 magic(n)产生...

MATLAB里边的错误使用 * 什么意思
1、之所以出现“Matlab误用*内部矩阵维数必须一致”的错误警告,是因为Y、T和B中的数据数不相等(不一致)(即Y是66个数据,而T和B是71个数据)。将t和b替换为t=[1:66]',b=[ones(1,66)];可以。2、Z表达式不应该用作点操作符,点操作符是矩阵操作而不是向量操作。从z表达式中删除点操作符。

matlab中用stem画图
>> a=magic(3)a = 8 1 6 3 5 7 4 9 2 >> stem(a)从图中可以看出,1,2,3处各有三个值,也就是第一行,第二行,第三行对应的数值,相同的列用相同的颜色进行画图。

matlab中怎样对一个矩阵去掉某些列
把空矩阵赋给要去掉的列:a=magic(3)a(:,2)=[] %去掉第二列 ---运行结果:a = 8 1 6 3 5 7 4 9 2 a = 8 6 3 7 4 2

产生一个5阶魔术方阵(help命令magic)在matlab中如何编程
A = magic(5)