2012-03-03 4 views
1

Как упростить эти команды до одной строки в MATLAB?Итерация через размеры в MATLAB

medoidContainer(:, i, 1) = squeeze(reshape(container(:, :, 1),1, y * x)); 
medoidContainer(:, i ,2) = squeeze(reshape(container(:, :, 2),1, y * x)); 
medoidContainer(:, i ,3) = squeeze(reshape(container(:, :, 3),1, y * x)); 

С ними я перекроить в RGB изображение на матрице одной линии (для каждого цвета). Но как я могу это сделать без необходимости повторять все измерения?


Я попытался:

medoidContainer(:, i ,1:3) = squeeze(reshape(container(:, :, 1:3),1, y * x)); 

Но это не работает.

+0

Это не совсем ясно, что цель здесь. Вы пытаетесь превратить массив 'M x N x 3' в массив' (M * N) x 3'? –

+0

@OliCharlesworth, yes (и переменная i является частью цикла, в котором это используется, и повторяется через список изображений). –

ответ

1

Похоже, вы пытаетесь преобразовать массив M x N x 3 в массив (M*N) x 3. Вы можете сделать это следующим образом:

a = reshape(container, [M*N 3]); 

Чтобы назначить его в «контейнер», я думаю, что вам это нужно:

medoidContainer(:,i,:) = a; 
+0

Вот и все! Я использовал его как 'medoidContainer (:, i, :) = reshape (container, [y * x 3]);', работает как шарм. Благодаря! –

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