2013-04-16 2 views
1

MATLAB вопрос:MATLAB submatrix

У меня есть массив A (2,2,2), который является трехмерным. Я хотел бы определить массив 2x2 в качестве подмассива A, следующим образом:

B = A (1,:, :).

То есть мы просто проецируем на первый компонент. Но теперь Matlab будет рассматривать эту матрицу 2x2 как 1x2x2-массив, поэтому я не могу делать определенные вещи (например, умножать на другую матрицу 2x2).

Как получить B в качестве подмаски 2x2 A?

ответ

2

Если вы думаете о небоскребе, то ваш A(1,:,:) занимает первый этаж, и эта операция неизбежно происходит в третьем измерении.

Вы можете использовать reshape(), squeeze() или permute(), чтобы избавиться от одноплодного измерения:

reshape(A(1,:,:),2,2) 
squeeze(A(1,:,:)) 
permute(A(1,:,:),[2,3,1]) 

squeeze() в значительной степени делает всю работу сам по себе, однако это не встроенной функции, а на самом деле использует reshape(). Ожидается, что другие две альтернативы будут быстрее.

+0

Спасибо, как раз то, что я искал. –

2

Вы хотели бы использовать функцию, которая удаляет squeeze размеры одноэлементные:

B = squeeze(A(1,:,:)) 

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

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