Я имею дело с данными изображения, и у меня есть 240 изображений, каждое из которых состоит из 5 вкладов каналов размером 231 на 384. Эта матрица теперь имеет размер (240 231 384,5), и я хотел бы иметь это как (231 * 240 384,5). Я не могу «изменить» его, не искажая данные. Как мне это сделать?
Объединение части многомерных матриц в Matlab
Ответы (2)
Вот мое предположение о том, что вы пытаетесь сделать
test = [1:16]; % sample data
test1 = reshape(test, 4, 4); % rearrange to 4x4
% this has a vertical arrangement which is prob not what you have
[m, n] = size(test1); % get dims
r = 2; % horizontal width / numb of cols
% this prob closer to what you have
test2 = test1(:,1:r)' % flip to horizontal order
test3 = reshape(test2, m*r, 1) % rearrange to vertical
person
athypes
schedule
26.11.2013
Как сказал Дэниел Р., включите пример вывода, который вы ищете. Непонятно, что вы пытаетесь сделать. О каких искажениях идет речь? Как выглядят ваши данные? Можете ли вы дать нам меньшую часть вашего кода с ожидаемым результатом?
- person athypes; 26.11.2013
Учитывая матрицу:
n1 = 240; n2 = 231; n3 = 384; n4 = 5;
A = randn(n1, n2, n3, n4);
Я предполагаю, что решение, которое вы ищете, либо предложено Луисом выше:
B = reshape(A, n1 * n2, n3, n4);
or
C = reshape(permute(A, [2 1 3 4]), n1 * n2, n3, n4);
В противном случае вы должны лучше объяснить, в чем ваша проблема.
person
randomatlabuser
schedule
26.11.2013
reshape(data, 240*231,384,5)
? - person Luis Mendo   schedule 26.11.2013