Why Magic Square[ magic(n) ] gives results diifferent on different situation?

8 次查看(过去 30 天)
As per Magic Square Help/Defn.:
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.
Now in MATLAB ,
1. The output of magic(2) not valid for 2 sums. diagonal sums and row sums in MATLAB Version 7.5.0.342 (R2007b)
>> magic(2)
ans =
1 3
4 2
2.It should not work for negative nos , but showing different results for different negative inputs.
>> magic(-4) ??? Error using ==> reshape Size vector elements should be nonnegative.
Error in ==> magic at 26 M = reshape(1:n*n,n,n)';
>> magic(-5)
ans =
[]
>>
Manoj Harichandan>>> In above cases both -4 & -5 are both negative no's , but getting differnt results for different values, for all odd negative numbers it is showing null matrix and for all even negative numbers it is showing as : "Size vector elements should be nonnegative". It should show same error logs for both the cases. I think , From the start only it should stop the procedures to call other functions, as input given to the magic() function is wrong , instead of it is calling reshape function,the error is also showing , which are related to the error of reshape fuction.

回答(1 个)

Lokesh Ravindranathan
编辑:Lokesh Ravindranathan 2013-6-26
If you look at the documentation for magic function http://www.mathworks.com/help/matlab/ref/magic.html. There is an algorithms section which explains three different methods of implementation depending on the type of numbers. In your case, -4 is being treated as a number divisible by 4 and -5 is being treated as an odd number.
This is the reason for the difference in error messages.
  1 个评论
M.K.H. CHANDAN
M.K.H. CHANDAN 2015-5-18
编辑:M.K.H. CHANDAN 2015-5-18
Yes,I know it ,
On newer version , it is updated only on help
but Can't we restrict it when argument is a negative after a function call, just on after entry to the function the function, instead of processing so many lines of code in MATLAB?

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Matrix Indexing 的更多信息

产品

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by