2015-06-02 5 views
-2

У меня есть 4D-изображение размера 60 x 80 x 12 x 350, то есть это трехмерное изображение, где каждый воксел имеет временные ряды (из 350).mat2cell, чтобы разделить 3D-изображение на блоки

Теперь я хочу использовать mat2cell, чтобы разделить 3D-изображение на кубы размером k*k*k. Каждый воксел в кубе представляет собой вектор размером 350 (временные ряды).

Я думаю, что смогу это сделать с mat2cell, но я не знаю, как именно. Каждая ячейка должна содержать в конце 3D-блок изображения, где каждый воксел блока представляет собой вектор размера 350.

+1

Что такое 'k' здесь? Кроме того, можете ли вы четко объяснить, что должна содержать результирующая ячейка? –

+1

что происходит, это 'L x W x C' (C = каналы) не равномерно делится на' k x k x k'? например, используя ваши размеры «60 x 80 x 12 x 350» и «k = 10», вы можете создавать воксели для «60 x 80 x 10», но что происходит для последних двух каналов? – andrew

+0

@andrew Я позаботился об этом в своем ответе и отрезал последнюю ячейку. Я думаю, что он чище, чем прокладка. – user1543042

ответ

1

Предполагая, что ваша 4D-матрица называется M. Вам нужны векторы, чьи элементы суммируются до size(M, i), где i = 1:4. Предполагая, что k имеет некоторое значение, я попробовал как 4 (потому что это общий коэффициент указанных вами размеров), так и 3 (потому что это не так).

k = 3; 
MPrime = mat2cell(M, ... 
    [k*ones(1, floor(size(M,1)/k)), mod(size(M,1), k)], ... 
    [k*ones(1, floor(size(M,2)/k)), mod(size(M,2), k)], ... 
    [k*ones(1, floor(size(M,3)/k)), mod(size(M,3), k)], ... 
    ones(1, size(M,4))); 

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

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