2013-03-15 4 views
1

Я пытаюсь найти способ преобразования массива 41x41 в матрицу в максимумах. Я пробовал aa1:matrix([aa]); Если я попробую matrixp(aa1), он возвращает true, но матрица содержит только первое значение.Массив к матрице

У кого-нибудь есть мысли?

ответ

1

Массивы IIUC являются хешами, поэтому порядок не такой твердый, как с матрицами. В стороне, похоже, должно быть возможно с некоторыми знаниями о том, как был создан массив, и genmatrix, см. Пятый faq entry.

Таким образом, если массив создается следующим образом:

(%i1) for i thru 4 do for j thru 4 do A[i,j]: i+j$ 

Мы имеем:

(%i2) listarray(A); 
(%o2) [2, 3, 4, 5, 3, 4, 5, 6, 4, 5, 6, 7, 5, 6, 7, 8] 
(%i3) arrayinfo(A); 
(%o3) [hashed, 2, [1, 1], [1, 2], [1, 3], [1, 4], [2, 1], [2, 2], [2, 3], [2, 4], [3, 1], [3, 2], [3, 3], [3, 4], [4, 1], [4, 2], [4, 3], [4, 4]] 

A может быть преобразована в матрицу 4x4, как это:

(%i4) genmatrix(A,4,4); 
     [ 2 3 4 5 ] 
     [   ] 
     [ 3 4 5 6 ] 
(%o4) [   ] 
     [ 4 5 6 7 ] 
     [   ] 
     [ 5 6 7 8 ] 
+0

Когда я попытался это я заметил, что выражение было слишком длинным для отображения. '(% i901) aa1: genmatrix (aa, 41,41) << Выражение слишком долго для отображения! >> ' Когда я проверил, он сделал aa1 матрицей, но некоторые из значений отсутствовали, а вместо этого просто был aa1 sub 21,21. – user1558881

+0

Я не могу воспроизвести эту ошибку, даже с массивом 410x410. Можете ли вы сделать минимальный пример, который имеет эту ошибку? – Thor

+0

Произошла ошибка в моем цикле for, который создавал проблемы. Теперь он работает благодаря большому количеству помощи. Теперь я использую максимумы, чтобы найти собственные значения этой матрицы, и это занимает очень много времени. По порядку часа. Mathematica может решить собственные значения примерно через минуту. Имеют ли максимумы проблемы с обработкой матриц такого размера? – user1558881

Смежные вопросы