2013-06-17 5 views
-3

У меня есть матрица с размером 65536x2, которую я хочу использовать с другим размером 256x256. Как изменить первый размер матрицы на 256x256? Я попытался reshape следующим образом:Использование матрицы в разных размерах

N=reshape(u,256,256); 

Но, получил следующее сообщение об ошибке:

Error using reshape 
To RESHAPE the number of elements must not change. 

Что я должен делать в этом случае?

Спасибо.

EDIT

оригинальный вопрос упоминалось 1x65536, но понял, что это должно быть 65536x2

+2

использование отладчика: '>> dbstop если error' и убедитесь, что 'numel (u)' действительно равно 65536. – Shai

ответ

2

Вы можете использовать N = reshape(u, 256, []), а затем проверить, что size(N) является 256 x 256. Этот синтаксис для reshape автоматически определяет размер, заданный [], в зависимости от того, что ему нужно, чтобы соответствовать количеству элементов в массиве.

EDIT: Моя собственная попытка перестройки случайной 1 x 65536 матрицы в 256 x 256 матрицы не имеют проблем с любой синтаксис, поэтому я хотел бы предложить вам убедиться, что исходная матрица фактически 1 x 65536, а также.

+1

Обратите внимание, что он будет работать, только если 'numel (u)' кратно 256. –

+0

@Engineero. Ты прав. Я заметил, что размер матрицы равен «65536 x2». В этом случае я могу все еще «изменить» его? – Simplicity

+0

Да, вы просто получите матрицу размером 256 x 512, используя команду 'reshape (u, 256, [])'. – Engineero

0

Вы не можете reshape 65536-на-2 массив в 256-на-256 у вас есть "лишние" 65536 элементы ...

попробовать

>> reshape(u, 256, 256 ,[]); 

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

  • Нет связанных вопросов^_^